Database
 sql >> Baza danych >  >> RDS >> Database

Jak filtrować rekordy za pomocą funkcji agregującej COUNT

Problem:

Chcesz znaleźć grupy wierszy z określoną liczbą wpisów w grupie.

Przykład:

Nasza baza danych zawiera tabelę o nazwie product z danymi w następujących kolumnach:id , name i category .

id imię kategoria
1 sofa meble
2 rękawiczki odzież
3 Koszulka odzież
4 krzesło meble
5 biurko meble
6 oglądaj elektronika
7 fotel meble
8 spódnica odzież
9 odbiornik radiowy elektronika

Znajdźmy kategorię produktów z więcej niż dwoma wpisami.

Rozwiązanie:

SELECT category, COUNT(id)
FROM product
GROUP BY category
HAVING COUNT(id)>2;

Oto wyniki:

kategoria liczba
meble 4
odzież 3

Dyskusja:

Aby filtrować rekordy według podanej liczby wierszy w grupie, użyj klauzuli HAVING. Filtruje wiersze za pomocą funkcji agregującej warunki, takiej jak COUNT. Najpierw w SELECT użyj nazwy kolumny lub kolumn do pogrupowania wierszy (jest to kategoria w naszym przykładzie), a następnie umieść funkcję agregującą COUNT, która zlicza liczbę rekordów w każdej grupie. Aby policzyć liczbę wierszy, użyj kolumny id, która przechowuje unikalne wartości (w naszym przykładzie używamy COUNT(id) ). Następnie użyj klauzuli GROUP BY, aby pogrupować rekordy według kolumn (GROUP BY kategorii powyżej). Po użyciu GROUP BY do filtrowania rekordów za pomocą funkcji agregujących, takich jak COUNT, użyj klauzuli HAVING. Jest zawsze używany po klauzuli GROUP BY. W HAVING używamy warunku do porównania wartości z wartością zwróconą przez funkcję agregującą. W tym przykładzie porównujemy, czy ILE.LICZB(id) zwraca wartość wyższą niż dwa. Jeśli tak, kategoria jest zwracana z liczbą produktów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operator porównania SQL

  2. Przeczytaj izolację zatwierdzonej migawki

  3. Zatrzask DBCC_OBJECT_METADATA

  4. Dopasowanie podaży do popytu — rozwiązania, część 1

  5. Jak znaleźć zduplikowane wartości w tabeli SQL?