Database
 sql >> база данни >  >> RDS >> Database

Как да филтрирате записи с агрегатна функция COUNT

Проблем:

Искате да намерите групи от редове с определен брой записи в група.

Пример:

Нашата база данни има таблица с име product с данни в следните колони:id , name и category .

id име категория
1 диван мебели
2 ръкавици дрехи
3 Тениска дрехи
4 стол мебели
5 бюро мебели
6 гледайте електроника
7 фотьойл мебели
8 пола дрехи
9 радиоприемник електроника

Нека намерим категорията продукти с повече от два записа.

Решение:

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

Ето резултатите:

категория брой
мебели 4
дрехи 3

Дискусия:

За да филтрирате записи според дадения брой редове в групата, използвайте клаузата HAVING. Той филтрира редове, използвайки в агрегатна функция за условие като COUNT. Първо, в SELECT, използвайте името на колона или колони, за да групирате редове (това е категория в нашия пример), след това поставете агрегатната функция COUNT, която изчислява броя на записите във всяка група. За да преброите броя на редовете, използвайте колоната id, която съхранява уникални стойности (в нашия пример използваме COUNT(id) ). След това използвайте клаузата GROUP BY, за да групирате записи според колони (GROUP BY категория по-горе). След като използвате GROUP BY за филтриране на записи с агрегатни функции като COUNT, използвайте клаузата HAVING. Винаги се използва след клаузата GROUP BY. В HAVING използваме условие, за да сравним стойност с такава, върната от агрегатната функция. В примера сравняваме дали COUNT(id) връща стойност, по-висока от две. Ако е истина, категорията се връща с броя на продуктите.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ВЪНШЕН КЛЮЧ

  2. 5 често срещани грешки, които трябва да избягвате, когато премахвате дублирането на вашите данни

  3. Попълване на Teradata с реалистични тестови данни De Novo

  4. Открийте 10 по-малко известни възможности на SQL Diagnostic Manager

  5. Свързване на Microsoft Excel към Xero