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

Jak zamawiać według liczby w SQL?

Problem:

Zagregowałeś dane w grupy, ale chcesz posortować rekordy w kolejności malejącej według liczby elementów w grupach.

Przykład:

Nasza baza danych zawiera tabelę o nazwie user z danymi w następujących kolumnach:id , first_name , last_name i country .

id imię nazwisko kraj
1 Lisa Williams Anglia
2 Gary Andersa Polska
3 Tomek Williams Polska
4 Michael Brązowy Francja
5 Zuzanna Kowalski USA
6 Anna Jones USA
7 Elia Młynarz Polska

Stwórzmy raport o naszych użytkownikach. Pogrupujemy wyniki według country i policz liczbę użytkowników z każdego kraju. Ale posortujemy również grupy w kolejności malejącej według liczby użytkowników. W ten sposób kraje z największą liczbą użytkowników pojawią się na górze.

Rozwiązanie:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id) DESC ;
kraj liczba(id)
Polska 3
USA 2
Anglia 1
Francja 1

Dyskusja:

Aby posortować wybrane rekordy według liczby elementów w każdej grupie, użyj ORDER BY klauzula.

Pierwszym krokiem jest użycie GROUP BY klauzula tworzenia grup (w naszym przykładzie grupujemy według country kolumna). Następnie w klauzuli ORDER BY używasz funkcji agregującej COUNT, która zlicza liczbę wartości w wybranej kolumnie; w naszym przykładzie liczymy różne identyfikatory za pomocą COUNT(id) . To skutecznie zlicza liczbę elementów w każdej grupie. ORDER BY następnie sortuje grupy zgodnie z tym obliczeniem.

Jak zwykle, możesz użyć zarówno porządku rosnącego, jak i malejącego z ORDER BY . Jeśli chcesz porządku malejącego (jak w tym przykładzie), użyj DESC słowo kluczowe. Kolejność rosnąca nie wymaga żadnego słowa kluczowego, ponieważ jest to ustawienie domyślne, ale możesz użyć ASC słowo kluczowe, jeśli chcesz być wyraźny. To jest ten sam przykład, ale z wynikami posortowanymi w porządku rosnącym:

Rozwiązanie:

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

Oto wynik:

kraj liczba(id)
Anglia 1
Francja 1
USA 2
Polska 3

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obciążenie związane ze śledzeniem tworzenia tabeli #temp

  2. Model bazy danych dla ankiety online. Część 2

  3. Podstawy programowania równoległego z platformą rozwidlenia/połączenia w Javie

  4. Jak łączyć ciągi w SQL

  5. Najlepsze podejścia do zgrupowanej mediany