Tìm bản ghi N hàng đầu cho mỗi nhóm trong MySQL

2022-03-20 14:48:24

Trong bài đăng này, tôi đang chia sẻ một minh chứng về cách tìm các bản ghi N hàng đầu cho mỗi nhóm trong MySQL.

Sáng hôm nay, tôi đang làm một trong những bản báo cáo và yêu cầu là phải tìm ra 2 nhân viên hàng đầu về giờ làm việc cho mỗi bộ phận.

Tôi đã thử nhiều tập lệnh và cuối cùng đã có giải pháp.

Tạo bảng với dữ liệu mẫu:

Tìm N giờ làm việc cao nhất của mỗi nhân viên:

Kết quả:

Bây giờ hãy kiểm tra kết quả trên, mỗi nhân viên có hai bản ghi hàng đầu dựa trên số giờ làm việc của họ.

Trong truy vấn trên, tôi đã sử dụng GROUP_CONCAT và FIND_IN_SET.
GROUP_CONCAT nhóm giá trị cột thành một chuỗi duy nhất và FIND_IN_SET được sử dụng để lấy vị trí của chuỗi trong danh sách chuỗi được phân tách bằng dấu phẩy.

Bạn có thể thay đổi giá trị từ 2 thành N cho báo cáo tùy chỉnh của mình.

Xem thêm:


Chia sẻ: