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

Как да поръчам по брой в SQL?

Проблем:

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

Пример:

Нашата база данни има таблица с име user с данни в следните колони:id , first_name , last_name и country .

id first_name фамилно_име държава
1 Лиза Уилямс Англия
2 Гари Андерс Полша
3 Том Уилямс Полша
4 Майкъл Кафяв Франция
5 Сюзън Смит САЩ
6 Ан Джоунс САЩ
7 Ели Милър Полша

Нека създадем отчет за нашите потребители. Ще групираме резултатите по country и пребройте броя на потребителите от всяка държава. Но също така ще сортираме групите в низходящ ред по брой потребители. По този начин страните с най-голям брой потребители ще се покажат в горната част.

Решение:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id) DESC ;
country count(id)
Полша 3
САЩ 2
Англия 1
Франция 1

Дискусия:

За да сортирате избраните записи по броя на елементите във всяка група, използвате ORDER BY клауза.

Първата стъпка е да използвате GROUP BY клауза за създаване на групите (в нашия пример ние групираме по country колона). След това в клаузата ORDER BY използвате агрегатната функция COUNT, която отчита броя на стойностите в колоната по ваш избор; в нашия пример ние броим различни идентификатори с COUNT(id) . Това ефективно отчита броя на елементите във всяка група. ORDER BY клаузата след това сортира групите според това изчисление.

Както обикновено, можете да използвате както възходящ, така и низходящ ред с ORDER BY . Ако искате низходящ ред (както в този пример), използвайте DESC ключова дума. Възходящият ред не се нуждае от ключова дума, защото е по подразбиране, но можете да използвате ASC ключова дума, ако искате да бъдете изрични. Това е същият пример, но с резултати, сортирани във възходящ ред:

Решение:

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

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

country count(id)
Англия 1
Франция 1
САЩ 2
Полша 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. Завършване на SQL. Истории за успех и провал

  2. SQL МЕЖДУ - интелигентни съвети за сканиране за диапазон от стойности

  3. Как стартират паралелните планове – част 5

  4. Синтетично генериране на данни

  5. Повече за CXPACKET чака:изкривен паралелизъм