Mam zapytanie SQL sql, które ma grupę według. Chcę policzyć wszystkie rekordy po grupie według instrukcji. Czy jest na to sposób bezpośrednio z sql? Na przykład, mając tabelę z użytkownikami, chcę wybrać różne miasta i całkowitą liczbę użytkowników
select town, count(*) from user
group by town
Chcę mieć kolumnę ze wszystkimi miastami i kolejną z liczbą użytkowników we wszystkich wierszach.
Przykładem wyniku posiadania 3 miast i 58 użytkowników jest:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Odpowiedzi:
To zrobi, co chcesz (lista miast, z liczbą użytkowników w każdym):
Można korzystać z większości funkcji agregujących podczas używania
GROUP BY
.Aktualizacja (po zmianie pytania i komentarze)
Możesz zadeklarować zmienną dla liczby użytkowników i ustawić ją na liczbę użytkowników, a następnie wybrać ją.
źródło
*
... OP odpowiedział na swoje pytanie, ale zdawało się, że nawet go nie przetestował, po prostu potwierdzam, że jest poprawne :) fredosaurus.com/notes-db/select/groupby.htmlMożesz użyć
COUNT(DISTINCT ...)
:źródło
town
kolumny i jestCOUNTs
zła rzecz (miasto zamiast użytkownika).Drugi sposób to:
źródło
Dzięki Oracle możesz korzystać z funkcji analitycznych:
Inne opcje to użycie podzapytania:
źródło
Jeśli chcesz zamówić według liczby (brzmi prosto, ale nie mogę znaleźć odpowiedzi na stosie, jak to zrobić), możesz:
źródło
Dziesięć nieodebranych odpowiedzi; większość nie robi tego, o co prosi użytkownik. Większość odpowiedzi błędnie odczytuje pytanie, ponieważ uważa, że w każdym mieście jest 58 użytkowników zamiast 58 ogółem. Nawet kilka poprawnych nie jest optymalnych.
SHOW session status LIKE 'Handler%';
W kontekście PO:
Ponieważ jest tylko jeden wiersz
tot
,CROSS JOIN
nie jest tak obszerny, jak mógłby być.Zwykłym wzorem jest
COUNT(*)
zamiastCOUNT(town)
. To ostatnie oznacza sprawdzanie, czytown
nie ma wartości zerowej, co w tym kontekście nie jest konieczne.źródło
Możesz użyć DISTINCT wewnątrz COUNT, tak jak powiedział Milkovsky
w moim przypadku:
Spowoduje to zwiększenie liczby głosów odpowiedzi uznawanych za ten sam identyfikator_użytkownika, co jedna liczba
źródło
Wiem, że to stary post w SQL Server:
źródło
IFNULL
zamiastISNULL
) prowadzi do różnych liczb dla każdego miasta; użytkownik chciał sumy. Zgodnie z pytaniem 58, a nie 174, to suma.Jeśli chcesz wybrać miasto i całkowitą liczbę użytkowników, możesz użyć tego zapytania poniżej:
źródło
User
.jeśli chcesz użyć opcji Wybierz wszystkie zapytania z liczbą, spróbuj tego ...
źródło
Wypróbuj następujący kod:
źródło