Kira Gabungan Berbeza pada Berbilang Lajur dalam SQL

Kira Gabungan Berbeza Pada Berbilang Lajur Dalam Sql



Apabila bekerja dalam pangkalan data SQL, anda mungkin menghadapi keadaan sedemikian di mana anda mesti mencari nilai yang berbeza daripada jadual tertentu dan mengalih keluar nilai pendua. Dalam kebanyakan kes, kami terutamanya menggunakan klausa yang berbeza untuk menentukan lajur yang nilainya adalah yang kami ingin unik.

Tetapi apakah yang berlaku apabila anda ingin memastikan bahawa nilai daripada berbilang lajur adalah unik dan tiada pendua?







Dalam tutorial ini, kita akan belajar cara menggunakan ciri SQL untuk memilih dua atau lebih lajur dan memastikan nilainya berbeza.



Masalah:

Katakan kita mempunyai jadual dengan berbilang lajur dan kita mahu mengira bilangan gabungan nilai yang berbeza merentas lajur ini.



Sebagai contoh, mari kita pertimbangkan jadual data jualan dengan lajur id_pelanggan, id_produk dan tarikh. Kami mahu mengira bilangan gabungan unik customer_id dan product_id.





Kira Gabungan Berbeza pada Berbilang Lajur dalam SQL

Kita boleh mengira bilangan gabungan berbeza merentas berbilang lajur menggunakan klausa COUNT DISTINCT dan fungsi CONCAT dalam SQL.

Fungsi CONCAT membolehkan kami menggabungkan dua atau lebih nilai ke dalam satu nilai yang kemudiannya boleh kami gunakan untuk membandingkan dan mengira.



Kita boleh menggambarkan ini dengan lebih baik menggunakan sintaks berikut:

PILIH COUNT ( CONCAT YANG BERBEZA ( lajur1, lajur2 ) )
DARI table_name;


Dalam kes ini, lajur1 dan lajur2 merujuk kepada lajur yang ingin kami gabungkan semasa mengira dan nama_jadual merujuk kepada nama jadual sasaran.

Mari kita ambil contoh jadual:

CIPTA jualan MEJA (
ID KUNCI UTAMA INT,
customer_id INT,
product_id INT,
Tarikh TARIKH
) ;

MASUKKAN KE DALAM NILAI jualan
( 1 , 100 , 1 , '2023-05-01' ) ,
( 2 , 101 , 1 , '2023-05-02' ) ,
( 3 , 100 , 2 , '2023-05-02' ) ,
( 4 , 102 , 3 , '2023-05-03' ) ,
( 5 , 101 , 2 , '2023-05-03' ) ,
( 6 , 103 , 2 , '2023-05-04' ) ,
( 7 , 100 , 3 , '2023-05-04' ) ,
( 8 , 102 , 1 , '2023-05-05' ) ,
( 9 , 101 , 3 , '2023-05-05' ) ,
( 10 , 103 , 1 , '2023-05-06' ) ;


Jadual Hasil:


Untuk menentukan bilangan kombinasi unik customer_id dan lajur product_id daripada jadual sebelumnya, kami boleh menggunakan pertanyaan seperti berikut:

PILIH COUNT ( CONCAT YANG BERBEZA ( ID pelanggan, '-' , product_id ) ) sebagai hasil
DARIPADA jualan;


Dalam pertanyaan sebelumnya, kami menggunakan klausa yang berbeza dan fungsi concat untuk menggabungkan nilai customer_id dan product_id dengan tanda sempang. Ini harus mencipta satu nilai untuk setiap gabungan seperti yang ditunjukkan dalam yang berikut:


Dari sini, kita boleh menggunakan fungsi kiraan untuk mengira kombinasi unik daripada jadual yang terhasil.

Kesimpulan

Kami berharap tutorial ini membantu anda. Dalam siaran ini, anda menemui cara untuk menggabungkan klausa yang berbeza, fungsi concat() dan klausa kiraan untuk menentukan nilai unik daripada berbilang lajur jadual SQL.