Tôi hiểu quan điểm của GROUP BY x
Nhưng làm thế nào để
GROUP BY x, y
làm việc, và nó có nghĩa là gì?
Tôi hiểu quan điểm của GROUP BY x
Nhưng làm thế nào để
GROUP BY x, y
làm việc, và nó có nghĩa là gì?
Câu trả lời:
Group By X
có nghĩa là đặt tất cả những người có cùng giá trị cho X trong một nhóm .
Group By X, Y
có nghĩa là đặt tất cả những người có cùng giá trị cho cả X và Y trong một nhóm .
Để minh họa bằng cách sử dụng một ví dụ, giả sử chúng ta có bảng dưới đây, để làm với ai đang theo học môn gì tại trường đại học:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Khi bạn chỉ sử dụng một group by
cột trên chủ đề; Nói:
select Subject, Count(*)
from Subject_Selection
group by Subject
Bạn sẽ nhận được một cái gì đó như:
Subject Count
------------------------------
ITB001 5
MKB114 2
... bởi vì có 5 mục cho ITB001 và 2 cho MKB114
Nếu chúng tôi đã đến group by
hai cột:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
chúng ta sẽ có được điều này:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Điều này là do, khi chúng tôi nhóm theo hai cột, có nghĩa là "Nhóm chúng sao cho tất cả những người có cùng Chủ đề và Học kỳ nằm trong cùng một nhóm, sau đó tính toán tất cả các hàm tổng hợp (Đếm, Tổng, Trung bình, v.v. ) cho mỗi nhóm đó " . Trong ví dụ này, điều này được chứng minh bằng thực tế rằng, khi chúng ta đếm chúng, có ba người làm ITB001 trong học kỳ 1 và hai người làm điều đó trong học kỳ 2. Cả hai người làm MKB114 đều ở học kỳ 1, vì vậy không có hàng cho học kỳ 2 (không có dữ liệu phù hợp với nhóm "MKB114, học kỳ 2")
Hy vọng rằng có ý nghĩa.
GROUP BY A,B
là giống như GROUP BY B,A
?
GROUP BY a, b
và GROUP BY a AND b
vì cái thứ hai chỉ liệt kê các mục được nhóm với cùng một nội dung và không có "nhóm dưới". Trong trường hợp này, đầu ra sẽ giống như đầu tiên.
Các GROUP BY
khoản được sử dụng cùng với các chức năng tổng hợp để nhóm các kết quả-set bởi một hoặc nhiều cột. ví dụ:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Ghi nhớ thứ tự này:
1) CHỌN (được sử dụng để chọn dữ liệu từ cơ sở dữ liệu)
2) TỪ (mệnh đề được sử dụng để liệt kê các bảng)
3) WHERE (mệnh đề được sử dụng để lọc các bản ghi)
4) NHÓM THEO (mệnh đề 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)
5) HAVING (mệnh đề được sử dụng kết hợp với mệnh đề GROUP BY để hạn chế các nhóm hàng trả về chỉ những người có điều kiện là TRUE)
6) ĐẶT HÀNG B (NG (từ khóa được sử dụng để sắp xếp tập kết quả)
Bạn có thể sử dụng tất cả những thứ này nếu bạn đang sử dụng các hàm tổng hợp và đây là thứ tự chúng phải được đặt, nếu không bạn có thể gặp lỗi.
Hàm tổng hợp là:
MIN trả về giá trị nhỏ nhất trong một cột đã cho
SUM trả về tổng của các giá trị số trong một cột đã cho
AVG trả về giá trị trung bình của một cột đã cho
COUNT trả về tổng số giá trị trong một cột đã cho
COUNT (*) trả về số lượng hàng trong bảng