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

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

Problém:

Musíte najít řádky, ve kterých skupiny mají součet hodnot v jednom sloupci menší než daná hodnota.

Příklad:

Naše databáze obsahuje tabulku s názvem company s údaji v následujících sloupcích:id , department , first_name , last_name a salary .

id oddělení first_name last_name plat
1 marketing Lora Hnědá 2300
2 finance Jan Jackson 3200
3 marketing Michael Thomson 1270
4 výroba Tony Miller 6500
5 výroba Sally Zelená 2500
6 finance Olivier Černá 3450
7 výroba Jeniffer Michelin 2800
8 marketing Jeremy Lorson 3600
9 marketing Louis Smith 4200

Pojďme najít názvy oddělení, která mají součty platů svých zaměstnanců nižší než 7000.

Řešení:

SELECT department, SUM(salary)
FROM company
GROUP BY department
HAVING SUM(salary)<7000;

Zde je výsledek:

oddělení součet
finance 6550

Diskuse:

Chcete-li filtrovat záznamy pomocí agregační funkce (funkce SUM z dřívější doby), použijte klauzuli HAVING. Chcete-li vypočítat součet hodnot pro každou skupinu řádků, použijte funkci agregace SUM. V tomto dotazu se sloupec oddělení počítá se součtem všech mezd jeho zaměstnanců jako skupina (vypočítejte to funkcí SUM se sloupcem plat jako argumentem). Protože vypočítáváte hodnotu pro každou skupinu řádků (řádky seskupujeme podle názvu oddělení), má dotaz klauzuli GROUP BY s názvem sloupce do skupiny řádků (v našem příkladu GROUP BY department ). Posledním krokem je použití agregační funkce v klauzuli HAVING. Pamatujte, že HAVING by mělo být uvedeno za klauzuli GROUP BY. HAVING obsahuje podmínku porovnávající hodnotu vrácenou agregační funkcí s danou hodnotou. Shora jsou to součty platů s hodnotou menší než 7000 (SUM(salary)<7000 ). Zde ověřujeme, že suma platů v každém oddělení je nižší než 7000. Dotaz zobrazil pouze jedno oddělení, finance, s platy 6550.


  1. Jak získat kumulativní celkový počet uživatelů za den v MySQL

  2. Jak vložit datový rámec pandy přes mysqldb do databáze?

  3. 7 věcí, které byste měli vědět o oddílech v infrastruktuře Oracle Cloud Infrastructure

  4. 4 tabulkové výstupní režimy v SQLite