Jak policzyć liczbę rekordów zwróconych przez grupę według zapytania,
Na przykład:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
Daje mi,
1
1
2
Muszę policzyć powyższe rekordy, aby uzyskać 1 + 1 + 1 = 3.
sql-server
tsql
count
group-by
Chris
źródło
źródło
Odpowiedzi:
Możesz zrobić oba w jednym zapytaniu, używając klauzuli OVER na innym COUNT
źródło
column_1, column_2, column_3, column_4
). Może to być znaczący efekt uboczny lub nie, w zależności od sposobu przetwarzania wyników.Najprostszym rozwiązaniem jest użycie tabeli pochodnej:
Innym rozwiązaniem jest użycie Count Distinct:
źródło
Wiem, że jest dość późno, ale nikt tego nie zasugerował:
Działa to przynajmniej w Oracle - obecnie nie mam innych baz danych do przetestowania i nie jestem zbyt zaznajomiony ze składnią T-Sql i MySQL.
Nie jestem też do końca pewien, czy bardziej wydajne jest to w parserze, aby zrobić to w ten sposób, czy też rozwiązanie zagnieżdżania instrukcji select dla wszystkich innych jest lepsze. Ale uważam, że ten jest bardziej elegancki z punktu widzenia kodowania.
źródło
Próbowałem osiągnąć to samo bez podzapytania i udało mi się uzyskać wymagany wynik, jak poniżej
źródło
CTE zadziałało dla mnie:
źródło
Co powiesz na:
źródło
Mógłbyś:
źródło
W PostgreSQL działa to dla mnie:
źródło
Czy możesz wykonać poniższy kod? To działało w Oracle.
źródło
Możesz również uzyskać poniższe zapytanie
źródło
Spróbuj tego zapytania:
źródło
Poniżej dla PrestoDb , gdzie FirstField może mieć wiele wartości:
źródło
Co powiesz na użycie funkcji partycjonowania COUNT OVER (PARTITION BY {column to group by}) w SQL Server?
Na przykład, jeśli chcesz pogrupować sprzedaż produktów według ItemID i chcesz zliczać każdy odrębny ItemID, po prostu użyj:
Jeśli zastosujesz to podejście, możesz pozostawić GROUP BY poza obrazem - zakładając, że chcesz zwrócić całą listę (tak jak możesz zgłosić pasmowanie, w którym musisz znać całą liczbę elementów, które zamierzasz połączyć, bez konieczności posiadania wyświetlić cały zestaw danych, czyli usługi Reporting Services).
źródło
BandedItemCount
dokładnie wartość ? Czy różni się między wierszami wyjściowymi? Pytający szuka liczby różnych poziomów grupowania.