SQL COUNT nhóm THEO nhiều cột

Việc sử dụng hàm COUNT[] kết hợp với GROUP BY rất hữu ích để mô tả dữ liệu của chúng tôi theo các nhóm khác nhau. Tổ hợp các giá trị giống nhau [trên một cột] sẽ được coi là một nhóm riêng lẻ

Ví dụ

Để lấy dữ liệu về 'khu vực làm việc' và số lượng tác nhân cho 'khu vực làm việc' này từ bảng 'tác nhân' với các điều kiện sau -

Để sắp xếp dữ liệu giống hệt nhau thành các nhóm, chúng ta sử dụng mệnh đề SQL group by. Nhóm SQL theo mệnh đề cột đơn đặt tất cả các bản ghi có cùng giá trị của chỉ một cột cụ thể vào một nhóm. Kỹ thuật nhóm theo nhiều cột truy xuất các giá trị cột được nhóm từ một hoặc nhiều bảng cơ sở dữ liệu bằng cách xem xét nhiều hơn một cột làm tiêu chí nhóm

Phạm vi

Bài viết bao gồm các chủ đề như

  • Nhóm theo một cột bằng các hàm tổng hợp
  • Nhóm theo nhiều cột, cách sử dụng nhóm theo nhiều cột

Mỗi chủ đề được giải thích rõ ràng bằng sơ đồ và ví dụ bất cứ khi nào cần thiết

Nhóm theo một cột

Để sắp xếp các dữ liệu tương tự [giống hệt nhau] thành các nhóm, chúng ta sử dụng mệnh đề SQL GROUP BY. Mệnh đề SQL GROUP BY được sử dụng cùng với một số hàm tổng hợp để nhóm các cột có cùng giá trị trong các hàng khác nhau. Chúng ta thường sử dụng mệnh đề GROUP BY với mệnh đề SELECT, mệnh đề WHERE và mệnh đề ORDER BY

Nhóm theo cột đơn đặt tất cả các bản ghi [hàng] có cùng giá trị của chỉ một cột cụ thể vào một nhóm

cú pháp

SELECT column_1, column_2, ..., column_n
FROM table
WHERE condition
GROUP BY column_1, column_2, ..., column_n;

Tham khảo hình ảnh dưới đây để hình dung nhóm

Trong hình trên, chúng tôi đã nhóm các dữ liệu tương tự lại với nhau

Ví dụ

Giả sử chúng ta đang làm việc trên cơ sở dữ liệu của một công ty. Chúng tôi có hai bảng, cụ thể là nhân viên và bộ phận. Bảng nhân viên có ba cột, cụ thể là employee_ID, lương và bộ phận_ID. Bảng khoa có 2 cột là tên khoa và tên khoa. Hãy để chúng tôi cố gắng nhóm các nhân viên có trong bảng nhân viên dựa trên bộ phận của họ_ID

bàn nhân viên

employee_IDsalarydepartment_ID10024000110117000110310000110490002105110002106160003

bàn khoa

bộ phận_IDbộ phận_name1Accounts1Marketing2IT

Truy vấn

SELECT SUM[salary], department_ID FROM employee 
GROUP BY department_ID;

đầu ra

lươngbộ phận_ID510001200002160003

Kỹ thuật nhóm theo nhiều cột truy xuất các giá trị cột được nhóm từ một hoặc nhiều bảng cơ sở dữ liệu bằng cách xem xét nhiều hơn một cột làm tiêu chí nhóm. Chúng tôi sử dụng truy vấn SQL để nhóm nhiều cột của cơ sở dữ liệu

Nhóm theo nhiều cột được sử dụng để kết hợp các bản ghi khác nhau với các giá trị tương tự [hoặc giống nhau] cho các cột được chỉ định. Bất cứ khi nào chúng tôi thực hiện nhóm theo nhiều cột [nhóm được xác định trên nhiều cột], thì tất cả các giá trị của các cột đó phải giống với giá trị của các cột khác để xem xét chúng để nhóm thành một bản ghi

Chúng tôi sử dụng mệnh đề GROUP BY để triển khai nhóm theo nhiều cột. Cú pháp của mệnh đề GROUP BY khá đơn giản. cú pháp

SELECT column_1, column_2,..., column_n
FROM table
WHERE condition
GROUP BY column_1_criteria, column_2_criteria,..., column_n_criteria;

Trong cú pháp trên, trước tiên chúng tôi cung cấp tên của các cột [cột_1, cột_2,. , cột_n] của bảng mà chúng tôi muốn truy xuất kết quả từ đó. Sau các cột, chúng tôi cung cấp tên bảng được nhắm mục tiêu [bảng từ đó kết quả sẽ được tìm nạp]. Cuối cùng, chúng ta có thể cung cấp một số điều kiện trên một số cột nhất định bằng cách sử dụng mệnh đề WHERE

Chúng tôi có thể chỉ định tiêu chí trên một cột và nhiều cột [như cột_1_tiêu chí, cột_2_tiêu chí,. , cột_n_tiêu chí]. Chúng tôi cũng có thể cung cấp các biểu thức làm tiêu chí nhóm

Cách sử dụng nhóm theo nhiều cột

Hãy để chúng tôi thảo luận về một số cách sử dụng và lợi ích của việc sử dụng kỹ thuật nhóm theo nhiều cột

  • Chúng ta có thể sử dụng kỹ thuật nhóm theo nhiều cột để nhóm nhiều bản ghi thành một bản ghi duy nhất
  • Tất cả các bản ghi có cùng giá trị cho các cột tương ứng được đề cập trong tiêu chí nhóm có thể được nhóm thành một cột duy nhất bằng cách sử dụng nhóm theo kỹ thuật nhiều cột
  • Nhóm theo nhiều cột được sử dụng để lấy dữ liệu tóm tắt từ [các] bảng của cơ sở dữ liệu
  • Nhóm theo nhiều cột thường được sử dụng để tạo truy vấn cho báo cáo

ví dụ

Bây giờ chúng ta hãy lấy một số ví dụ về các nhóm theo nhiều cột để hiểu rõ hơn về chủ đề này

Nhóm theo hai cột và tìm giá trị trung bình

Giả sử chúng ta đang làm việc trên cơ sở dữ liệu của một công ty. Chúng tôi có hai bảng, cụ thể là nhân viên và bộ phận. Bảng nhân viên có 3 cột là employee_ID, lương, bộ phận_id. Bảng khoa có 2 cột là tên khoa và tên khoa. Hãy thử tìm mức lương trung bình của nhân viên trong mỗi bộ phận

bàn nhân viên

employee_IDsalarydepartment_ID10024000110117000110310000110490002105110002106160003

bàn khoa

bộ phận_IDbộ phận_name1Accounts1Marketing2IT

Truy vấn

SELECT 
    e.department_ID,
    department_name,
    ROUND[AVG[salary], 2] average_salary
FROM
    employees e
        INNER JOIN
    departments d ON d.department_ID = e.department_ID
GROUP BY e.department_ID;

đầu ra

bộ phận_IDbộ phận_nameaverage_salary1Accounts170002Marketing100003IT16000

Trong truy vấn trên, chúng tôi đã tham gia bảng bộ phận và nhân viên và chọn id bộ phận, tên bộ phận và mức lương trung bình. Mức lương trung bình được tính bằng cách nhóm nhân viên dựa trên bộ phận của họ

Nhóm theo hai cột và tìm nhiều số liệu thống kê

Chúng tôi đã thấy một nhóm nhân viên theo một cột. Bây giờ chúng ta hãy tìm hiểu cách nhóm theo nhiều cột

Chúng ta hãy xem xét cùng một bộ phận và bảng nhân viên. Bảng nhân viên có bốn cột, cụ thể là employee_ID, lương, bộ phận_id và job_id. Bảng khoa có 2 cột là tên khoa và tên khoa. Chúng tôi có một bảng khác có tên công việc, lưu trữ job_id và tên công việc

Hãy thử nhóm theo id nhân viên và id nhân viên

bàn nhân viên

employee_IDsalarydepartment_IDjob_id10024000111011700011103100001110490002310511000231061600032

bàn khoa

bộ phận_IDbộ phận_name1Accounts2IT3Marketing

bảng công việc

job_IDjob_title1Accountant2Manager3HR

Truy vấn

SELECT 
    e.department_id,
    d.department_name,
    e.job_id,
    COUNT[e.employee_ID]
FROM
    employees e
        INNER JOIN
    departments d ON d.department_ID = e.department_ID
        INNER JOIN
    jobs j ON j.job_ID = e.job_ID
GROUP BY e.department_ID , e.job_ID;

đầu ra

bộ phận_IDbộ phận_têncông việc_IDCOUNT[e. employee_ID]1Accounts132IT323Marketing21

Đầu ra [như trên] được tạo bằng thao tác nối của ba bảng. Sau thao tác nối, điều kiện GROUP BY được thêm vào. Chúng tôi cũng đã thêm chức năng tổng hợp số lượng trên cột ID nhân viên

Bạn có thể NHÓM THEO nhiều cột trong SQL không?

Chúng ta có thể sử dụng kỹ thuật nhóm theo nhiều cột để nhóm nhiều bản ghi thành một bản ghi duy nhất . Tất cả các bản ghi có cùng giá trị cho các cột tương ứng được đề cập trong tiêu chí nhóm có thể được nhóm thành một cột duy nhất bằng cách sử dụng nhóm theo kỹ thuật nhiều cột.

Tôi có thể NHÓM THEO 3 cột trong SQL không?

Chúng tôi có thể nhóm tập kết quả trong SQL trên nhiều giá trị cột . Khi chúng tôi xác định tiêu chí nhóm trên nhiều cột, tất cả các bản ghi có cùng giá trị cho các cột được xác định trong mệnh đề nhóm theo được biểu thị chung bằng cách sử dụng một bản ghi trong đầu ra truy vấn.

Mệnh đề GROUP BY có thể có nhiều cột không?

Có, có thể sử dụng mệnh đề GROUP BY của MySQL với nhiều cột giống như chúng ta có thể sử dụng mệnh đề DISTINCT của MySQL.

Làm cách nào để CHỌN nhiều cột trong mệnh đề GROUP BY trong SQL Server?

Tất cả những gì tôi phải làm là. .
tạo truy vấn con VỚI CTE_Name với cột GroupBy và điều kiện COUNT của bạn
chọn tất cả [hoặc bất cứ thứ gì bạn muốn hiển thị] từ bảng giá trị và tổng từ CTE
INNER THAM GIA với CTE trên cột ID [khóa chính hoặc ràng buộc duy nhất]

Chủ Đề