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

Cara Mengelompokkan dengan Dua Kolom di SQL

Masalah:

Anda ingin mengelompokkan data menurut dua kolom sehingga Anda dapat menghitung beberapa statistik.

Contoh:

Dalam order tabel, Anda memiliki kolom order_date , product_id , customer_id , dan number . Anda ingin menghitung jumlah produk yang dibeli oleh setiap pelanggan setiap hari.

order tabel terlihat seperti ini:

tanggal_pesanan id_produk id_pelanggan angka
25-11-2020 7 1 1
25-11-2020 12 1 3
26-11-2020 53 1 2
26-11-2020 1 2 4
26-11-2020 3 2 1
26-11-2020 16 2 7
26-11-2020 3 3 2
27-11-2020 6 3 1

Solusi:

SELECT
  order_date,
  customer_id,
  SUM(number) AS products_number
FROM order

Hasilnya adalah:

tanggal_pesanan id_pelanggan products_number
26-11-2020 3 2
27-11-2020 3 1
26-11-2020 2 12
25-11-2020 1 4
26-11-2020 1 2

Diskusi:

Untuk mengelompokkan menurut dua kolom, cukup gunakan GROUP BY dengan dua kolom. Nama kolom harus dicantumkan setelah GROUP BY kata kunci dan dipisahkan dengan koma. Grup akan dibuat berdasarkan nilai dari kedua kolom; untuk setiap pasangan nilai, grup terpisah dibuat (mis. ('2020-11-25', 1) ). Perhatikan tabel di bawah ini, di mana setiap kelompok disajikan dalam warna yang berbeda:

tanggal_pesanan id_pelanggan id_produk angka
25-11-2020 1 7 1
25-11-2020 1 12 3
26-11-2020 1 53 2
26-11-2020 2 1 4
26-11-2020 2 3 1
26-11-2020 2 16 7
26-11-2020 3 3 2
27-11-2020 3 6 1

Jika salah satu atau kedua kolom memiliki NULLs nilai, nilai ini diperlakukan sebagai grup terpisah (mis., ('2020-11-26', NULL) , (NULL, 5) atau (NULL, NULL) ).

Di sisi lain, jika ada NULLs di kolom tempat kita menerapkan fungsi agregat, NULLs nilai dihilangkan begitu saja. (Dalam contoh ini, fungsi agregat adalah SUM() dan kolomnya adalah number ). Jika kita memiliki nilai angka 2 , 1 , dan NULL untuk salah satu grup, SUM(number) akan sama dengan 3 (2 dan 1 ditambahkan bersama-sama, dan NULLs dihilangkan.)

Demikian pula, Anda dapat mengelompokkan menurut sejumlah kolom – cukup tulis nama kolom di GROUP BY klausa dan pisahkan dengan koma.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gejala Overhead Pengamat dan Jenis Tunggu

  2. Perbedaan antara SQL dan NoSQL

  3. Apa itu DBMS? – Panduan Komprehensif untuk Sistem Manajemen Basis Data

  4. Mengekspor Database Anda untuk Transfer

  5. Sepuluh Ancaman Umum terhadap Kualitas Rencana Eksekusi