Chúng ta có thể lấy một ví dụ đơn giản.
Xem xét một bảng có tên TableA
với các giá trị sau:
id firstname lastname Mark
-------------------------------------------------------------------
1 arun prasanth 40
2 ann antony 45
3 sruthy abc 41
6 new abc 47
1 arun prasanth 45
1 arun prasanth 49
2 ann antony 49
GROUP BY
Mệnh đề SQL GROUP BY có thể được sử dụng trong câu lệnh CHỌN để thu thập dữ liệu trên nhiều bản ghi và nhóm kết quả theo một hoặc nhiều cột.
Nói một cách đơn giản hơn, câu lệnh GROUP BY được sử dụng cùng với các hàm tổng hợp để nhóm tập hợp kết quả theo một hoặc nhiều cột.
Cú pháp:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;
Chúng tôi có thể áp dụng GROUP BY
trong bảng của chúng tôi:
select SUM(Mark)marksum,firstname from TableA
group by id,firstName
Các kết quả:
marksum firstname
----------------
94 ann
134 arun
47 new
41 sruthy
Trong bảng thực của chúng tôi, chúng tôi có 7 hàng và khi chúng tôi áp dụng GROUP BY id
, máy chủ sẽ nhóm các kết quả dựa trên id
:
Nói một cách đơn giản:
ở đây GROUP BY
thường làm giảm số lượng hàng trả về bằng cách cuộn chúng lại và tính toán Sum()
cho mỗi hàng.
PARTITION BY
Trước khi đi đến PHẦN THAM GIA, chúng ta hãy xem OVER
mệnh đề:
Theo định nghĩa MSDN:
Mệnh đề OVER xác định một cửa sổ hoặc tập hợp các hàng do người dùng chỉ định trong tập kết quả truy vấn. Sau đó, một hàm cửa sổ sẽ tính toán một giá trị cho mỗi hàng trong cửa sổ. Bạn có thể sử dụng mệnh đề QUÁ với các hàm để tính các giá trị tổng hợp, chẳng hạn như trung bình di chuyển, tổng gộp tích lũy, tổng số chạy hoặc kết quả N hàng đầu trên mỗi nhóm.
THAM GIA B BYNG sẽ không làm giảm số lượng hàng trả về.
Chúng ta có thể áp dụng THAM GIA B BYNG trong bảng ví dụ của mình:
SELECT SUM(Mark) OVER (PARTITION BY id) AS marksum, firstname FROM TableA
Kết quả:
marksum firstname
-------------------
134 arun
134 arun
134 arun
94 ann
94 ann
41 sruthy
47 new
Nhìn vào kết quả - nó sẽ phân vùng các hàng và trả về tất cả các hàng, không giống như NHÓM THEO.