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

Jak seřadit podle počtu v SQL?

Problém:

Shromáždili jste data do skupin, ale chcete záznamy seřadit sestupně podle počtu prvků ve skupinách.

Příklad:

Naše databáze má tabulku s názvem user s údaji v následujících sloupcích:id , first_name , last_name a country .

id first_name last_name země
1 Lisa Williams Anglie
2 Gary Anders Polsko
3 Tome Williams Polsko
4 Michael Hnědá Francie
5 Susan Smith USA
6 Anne Jones USA
7 Ellie Miller Polsko

Vytvořme zprávu o našich uživatelích. Výsledky seskupíme podle country a spočítat počet uživatelů z každé země. Skupiny ale také seřadíme sestupně podle počtu uživatelů. Země s největším počtem uživatelů se tak zobrazí nahoře.

Řešení:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id) DESC ;
země count(id)
Polsko 3
USA 2
Anglie 1
Francie 1

Diskuse:

Chcete-li seřadit vybrané záznamy podle počtu prvků v každé skupině, použijte ORDER BY doložka.

Prvním krokem je použití GROUP BY klauzule k vytvoření skupin (v našem příkladu seskupujeme podle country sloupec). Potom v klauzuli ORDER BY použijete agregační funkci COUNT, která spočítá počet hodnot ve vámi zvoleném sloupci; v našem příkladu počítáme různá ID pomocí COUNT(id) . To efektivně počítá počet prvků v každé skupině. ORDER BY klauzule pak seřadí skupiny podle tohoto výpočtu.

Jako obvykle můžete použít vzestupné i sestupné pořadí pomocí ORDER BY . Pokud chcete sestupné pořadí (jako v tomto příkladu), použijte DESC klíčové slovo. Vzestupné pořadí nepotřebuje žádné klíčové slovo, protože je výchozí, ale můžete použít ASC klíčové slovo, pokud chcete být explicitní. Toto je stejný příklad, ale s výsledky seřazenými vzestupně:

Řešení:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id);

Zde je výsledek:

země count(id)
Anglie 1
Francie 1
USA 2
Polsko 3

  1. Jak předat heslo do pg_dump?

  2. Může INNER JOIN nabídnout lepší výkon než EXISTS

  3. Jak opravím chybu „Poskytovatel pojmenovaných kanálů, chyba 40 – Nelze otevřít připojení k serveru SQL Server“?

  4. Pgbackrest Restore and Restore Delta