Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Bagaimana Cara Memesan dengan Hitungan di SQL?

Masalah:

Anda menggabungkan data ke dalam grup, tetapi Anda ingin mengurutkan rekaman dalam urutan menurun menurut jumlah elemen dalam grup.

Contoh:

Database kami memiliki tabel bernama user dengan data pada kolom berikut:id , first_name , last_name , dan country .

id nama_depan nama_belakang negara
1 Lisa Williams Inggris
2 Gary Anders Polandia
3 Tom Williams Polandia
4 Michael Coklat Prancis
5 Susan Smith AS
6 Anne Jones AS
7 Ellie Miller Polandia

Mari buat laporan tentang pengguna kami. Kami akan mengelompokkan hasilnya menurut country dan menghitung jumlah pengguna dari setiap negara. Namun kami juga akan mengurutkan grup dalam urutan menurun berdasarkan jumlah pengguna. Dengan begitu, negara dengan jumlah pengguna terbanyak akan muncul di urutan teratas.

Solusi:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id) DESC ;
negara jumlah(id)
Polandia 3
AS 2
Inggris 1
Prancis 1

Diskusi:

Untuk mengurutkan record yang dipilih menurut jumlah elemen dalam setiap grup, gunakan ORDER BY klausa.

Langkah pertama adalah menggunakan GROUP BY klausa untuk membuat grup (dalam contoh kami, kami mengelompokkan berdasarkan country kolom). Kemudian, dalam klausa ORDER BY, Anda menggunakan fungsi agregat COUNT, yang menghitung jumlah nilai dalam kolom pilihan Anda; dalam contoh kami, kami menghitung ID yang berbeda dengan COUNT(id) . Ini secara efektif menghitung jumlah elemen di setiap grup. ORDER BY klausa kemudian mengurutkan grup menurut perhitungan itu.

Seperti biasa, Anda dapat menggunakan urutan menaik atau menurun dengan ORDER BY . Jika Anda ingin urutan menurun (seperti dalam contoh ini), Anda menggunakan DESC kata kunci. Urutan menaik tidak memerlukan kata kunci apa pun karena ini adalah default, tetapi Anda dapat menggunakan ASC kata kunci jika Anda ingin eksplisit. Ini adalah contoh yang sama tetapi dengan hasil yang diurutkan dalam urutan menaik:

Solusi:

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

Ini hasilnya:

negara jumlah(id)
Inggris 1
Prancis 1
AS 2
Polandia 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. Mengaktifkan Otentikasi Dua Faktor untuk ScaleGrid DBaaS

  2. Penggunaan Utama sys.dm_os_wait_stats

  3. Pengantar Data Mining

  4. Desain Basis Data Dengan Vertabelo

  5. Pelajari cara menggunakan SQL SELECT dengan contoh