sql >> Databáze >  >> RDS >> Database

Jak filtrovat záznamy pomocí agregační funkce COUNT

Problém:

Chcete najít skupiny řádků s určitým počtem položek ve skupině.

Příklad:

Naše databáze obsahuje tabulku s názvem product s údaji v následujících sloupcích:id , name a category .

id jméno kategorie
1 pohovka nábytek
2 rukavice oblečení
3 Tričko oblečení
4 židle nábytek
5 stůl nábytek
6 sledovat elektronika
7 křeslo nábytek
8 sukně oblečení
9 rádiový přijímač elektronika

Pojďme najít kategorii produktů s více než dvěma položkami.

Řešení:

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

Zde jsou výsledky:

kategorie počet
nábytek 4
oblečení 3

Diskuse:

Pro filtrování záznamů podle daného počtu řádků ve skupině použijte klauzuli HAVING. Filtruje řádky pomocí funkce agregace podmínek, jako je COUNT. Nejprve v SELECT použijte název sloupce nebo sloupců k seskupení řádků (toto je kategorie v našem příkladu), poté umístěte agregační funkci COUNT, která sečte počet záznamů v každé skupině. Chcete-li spočítat počet řádků, použijte sloupec id, který ukládá jedinečné hodnoty (v našem příkladu používáme COUNT(id) ). Dále použijte klauzuli GROUP BY k seskupení záznamů podle sloupců (GROUP BY kategorie výše). Po použití GROUP BY k filtrování záznamů pomocí agregačních funkcí, jako je COUNT, použijte klauzuli HAVING. Vždy se používá po klauzuli GROUP BY. V HAVING používáme podmínku k porovnání hodnoty s hodnotou vrácenou agregační funkcí. V příkladu porovnáme, zda COUNT(id) vrátí hodnotu vyšší než dvě. Pokud je true, vrátí se kategorie s počtem produktů.


  1. Vkládání dat kurzoru do pole

  2. Naplnění Teradata realistickými testovacími daty De Novo

  3. Jak mohu vybrat ze seznamu hodnot v SQL Server

  4. SQL dotaz pro získání dat za poslední 3 měsíce