Đếm các kết hợp riêng biệt trên nhiều cột trong SQL

Dem Cac Ket Hop Rieng Biet Tren Nhieu Cot Trong Sql



Khi làm việc trong cơ sở dữ liệu SQL, bạn có thể gặp phải những trường hợp như vậy khi bạn phải tìm các giá trị riêng biệt từ một bảng nhất định và loại bỏ các giá trị trùng lặp. Trong hầu hết các trường hợp, chúng tôi chủ yếu sử dụng mệnh đề riêng biệt để chỉ định cột có giá trị mà chúng tôi muốn là duy nhất.

Nhưng điều gì sẽ xảy ra khi bạn muốn đảm bảo rằng các giá trị từ nhiều cột là duy nhất và không có giá trị trùng lặp?







Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng các tính năng SQL để chọn hai hoặc nhiều cột và đảm bảo rằng các giá trị của chúng là khác biệt.



Vấn đề:

Giả sử chúng ta có một bảng có nhiều cột và chúng ta muốn đếm số lượng các kết hợp giá trị riêng biệt trên các cột này.



Ví dụ: hãy xem xét một bảng dữ liệu bán hàng với các cột customer_id, product_id và ngày. Chúng tôi muốn đếm số lượng kết hợp duy nhất của customer_id và product_id.





Đếm các kết hợp riêng biệt trên nhiều cột trong SQL

Chúng ta có thể đếm số lượng kết hợp riêng biệt trên nhiều cột bằng cách sử dụng mệnh đề COUNT DISTINCT và hàm CONCAT trong SQL.

Hàm CONCAT cho phép chúng ta nối hai hoặc nhiều giá trị thành một giá trị duy nhất mà sau đó chúng ta có thể sử dụng để so sánh và đếm.



Chúng ta có thể minh họa rõ hơn điều này bằng cách sử dụng cú pháp sau:

CHỌN ĐẾM ( CONCAT KHÁC BIỆT ( cột1, cột2 ) )
TỪ tên_bảng;


Trong trường hợp này, cột1 và cột2 đề cập đến các cột mà chúng tôi muốn nối trong khi đếm và tên_bảng đề cập đến tên của bảng đích.

Hãy để chúng tôi lấy một bảng mẫu:

TẠO BẢNG bán hàng (
nhận dạng KHÓA CHÍNH INT,
khách hàng_id INT,
product_id INT,
ngày NGÀY
) ;

CHÈN VÀO GIÁ TRỊ bán hàng
( 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' ) ,
( số 8 , 102 , 1 , '2023-05-05' ) ,
( 9 , 101 , 3 , '2023-05-05' ) ,
( 10 , 103 , 1 , '2023-05-06' ) ;


Bảng kết quả:


Để xác định số lượng kết hợp duy nhất của cột customer_id và product_id từ bảng trước, chúng ta có thể sử dụng truy vấn như sau:

CHỌN ĐẾM ( CONCAT KHÁC BIỆT ( ID khách hàng, '-' , ID sản phẩm ) ) BẰNG kết quả
TỪ bán hàng;


Trong truy vấn trước, chúng tôi sử dụng mệnh đề riêng biệt và hàm concat để nối các giá trị của customer_id và product_id bằng dấu gạch nối. Điều này sẽ tạo ra một giá trị duy nhất cho mỗi kết hợp như sau:


Từ đây, chúng ta có thể sử dụng hàm đếm để đếm các kết hợp duy nhất từ ​​bảng kết quả.

Phần kết luận

Chúng tôi hy vọng rằng hướng dẫn này đã giúp bạn. Trong bài đăng này, bạn đã khám phá cách kết hợp mệnh đề riêng biệt, hàm concat() và mệnh đề đếm để xác định các giá trị duy nhất từ ​​nhiều cột trong bảng SQL.