Lỗi này có ý nghĩa hoàn hảo. COUNT
là một hàm "tổng hợp". Vì vậy, bạn cần cho nó biết trường nào cần tổng hợp, trường nào được thực hiện với GROUP BY
mệnh đề.
Câu trả lời có lẽ có ý nghĩa nhất trong trường hợp của bạn sẽ là:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Nếu bạn chỉ sử dụng COUNT(*)
, bạn đang yêu cầu trả về số hàng đầy đủ, thay vì tổng hợp theo một điều kiện khác. Yêu cầu của bạn nếu GROUP BY
là ẩn trong trường hợp đó, có thể được trả lời bằng:"sort of":Nếu bạn không chỉ định bất kỳ điều gì giống như hỏi:"group by nothing", có nghĩa là bạn sẽ nhận được một tổng hợp lớn, đó là toàn bộ bảng.
Ví dụ:thực thi:
SELECT COUNT(*) FROM table;
sẽ hiển thị cho bạn số hàng trong bảng đó, ngược lại:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
sẽ hiển thị cho bạn số lượng hàng mỗi giá trị của col_a
. Một cái gì đó như:
col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Bạn cũng nên lưu ý rằng *
có nghĩa là đếm mọi thứ . Bao gồm NULL
S! Nếu bạn muốn đếm một điều kiện cụ thể, bạn nên sử dụng COUNT(expression)
! Xem tài liệu về các hàm aggragate
để biết thêm chi tiết về chủ đề này.