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

Cara Memesan Baris dengan Jumlah Grup di SQL

Masalah:

Anda ingin mengurutkan baris berdasarkan jumlah yang dihasilkan oleh sekelompok catatan.

Contoh:

Basis data kami memiliki tabel bernama training dengan data dalam empat kolom:id , masuk , tahun , dan skor .

id masuk tahun skor
1 Andi 2018 24
2 Lucy 2019 25
3 Andi 2019 20
4 Lucy 2018 16
5 Gary 2019 18
6 Gary 2018 19
7 Gary 2017 22
8 Lucy 2017 21
9 Andi 2017 26

Mari kita dapatkan nama login setiap pemain bersama dengan jumlah total skor sepanjang tahun, menempatkan catatan dalam urutan menurun sesuai dengan skor total pemain.

Solusi:

Kami akan menggunakan operator ORDER BY untuk mengurutkan record berdasarkan fungsi agregat SUM() , yang menghitung skor total untuk setiap pemain sepanjang tahun.

Inilah kueri yang akan Anda tulis:

SELECT login,
  SUM(score) AS total_score
FROM training
GROUP BY login
ORDER BY SUM(score) DESC;

Ini hasilnya:

login total_skor
Andy 70
Lucy 62
Gary 59

Diskusi:

Gunakan ORDER BY jika Anda ingin mengurutkan baris menurut nilai yang dikembalikan oleh fungsi agregat seperti SUM() . Operator ORDER BY diikuti oleh fungsi agregat (dalam contoh kita, SUM() ). DESC ditempatkan setelah fungsi ini untuk menentukan urutan pengurutan menurun. Dengan demikian, nilai agregat tertinggi ditampilkan terlebih dahulu, kemudian nilai yang lebih rendah secara bertahap ditampilkan. Untuk mengurutkan dalam urutan menaik, Anda dapat menentukan ASC atau cukup menghilangkan salah satu kata kunci, karena menaik adalah urutan pengurutan default.

Dalam kueri di atas, kami memilih login setiap pemain dan jumlah skor mereka untuk semua tahun. Skor total ini dihitung menggunakan SUM() dengan kolom skor sebagai argumen. Kami menambahkan alias untuk nilai agregat ini (SUM(score) AS total_score ); Anda dapat menggunakan alias ini sebagai ganti fungsi agregat dalam klausa ORDER BY (ORDER BY total_score DESC ).

Perhatikan bahwa kami menyertakan login dalam GROUP BY. Jika kita menyertakan kolom di SELECT, kita juga harus menggunakan kolom di GROUP BY. Dalam contoh ini, kami menggunakan klausa GROUP BY diikuti oleh kolom login karena kami meletakkan kolom ini di SELECT. Perhatikan bahwa GROUP BY ditempatkan sebelum ORDER BY dalam kueri.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyesuaikan Pasokan Dengan Permintaan — Solusi, Bagian 3

  2. Huawei GaussDB

  3. Cara Menghubungkan Database dengan Amazon VPC

  4. TABEL SQL

  5. Ambang Pengoptimalan – Pengelompokan dan Penggabungan Data, Bagian 2