Sử dụng nhóm theo hai trường và đếm trong SQL


83

Tôi có một bảng trong db mysql của mình có hai cột: nhóm và nhóm con. Xem bên dưới.

 group, subGroup
 grp-A, sub-A
 grp-A, sub-A
 grp-A, sub-B      
 grp-B, sub-A
 grp-B, sub-B
 grp-B, sub-B

Tôi đang cố gắng lấy số lượng bản ghi cho mỗi nhóm cặp / nhóm con duy nhất.

Đây là những gì tôi mong đợi:

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2

Sau khi đọc một số bài viết, tôi đã thử một số truy vấn sql bằng cách sử dụng group by, count (), nhưng tôi không quản lý để nhận được kết quả mong đợi. Làm thế nào tôi có thể sửa lỗi này?


1
tôi muốn một trường hợp khác, số lượng nhóm cho mỗi nhóm vì vậy đây là truy vấn CHỌN a, b, COUNT (riêng biệt b) TỪ tbl GROUP BY a
luky

Câu trả lời:


139

Tôi nghĩ bạn đang tìm kiếm: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b


1
Xin chào Corbinb. Cảm ơn rât nhiều. nó đang làm việc. Tôi đã làm những gì bạn đang đề nghị nhưng được thêm vào nhóm bởi a, b Tôi đã làm nhóm bởi a và b. Cảm ơn một lần nữa
Marc

3
a and btrông giống như một câu lệnh đối với MySQL (không thực sự chắc chắn liệu đó có phải là lỗi cú pháp hay không hay nó sẽ nhóm vào giá trị trả về 0 hoặc 1 - Tôi sẽ giả sử là một lỗi cú pháp, đặc biệt là đối với các trường varchar). Để nhóm trên nhiều cột, bạn chỉ cần sử dụng dấu phẩy.
Corbin

1
Cảm ơn rất nhiều!! .. Vấn đề với tôi là tôi không thể diễn đạt câu hỏi của mình và dành rất nhiều thời gian cho googling cuối cùng đã hạ cánh ở đây cho một giải pháp đơn giản và có dấu chấm.
faheem Farhan

Thay vì đếm, tôi cần toàn bộ chi tiết hồ sơ. Ví dụ: grpA có 2 nhóm con: subA và subB, vì vậy tôi cần truy xuất toàn bộ bản ghi cho mỗi nhóm con. Ai đó làm ơn giúp tôi với. @Corbin
quản trị 7798

2
tôi muốn đếm số nhóm cho mỗi nhóm vì vậy đây là truy vấn CHỌN a, b, COUNT (phân biệt b) TỪ tbl GROUP BY a
luky

8
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup

Thay vì đếm, tôi cần toàn bộ chi tiết hồ sơ. Ví dụ: grpA có 2 nhóm con: subA và subB, vì vậy tôi cần truy xuất toàn bộ bản ghi cho mỗi nhóm con. Ai đó làm ơn giúp tôi với. @ user1127214
quản trị 7798

7

Bạn phải nhóm cả cột, nhóm và nhóm con, sau đó sử dụng hàm tổng hợp COUNT().

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup

1
Có vẻ một typo với tôi group = groupName!
csharpwinphonexaml

Thay vì đếm, tôi cần toàn bộ chi tiết hồ sơ. Ví dụ: grpA có 2 nhóm con: subA và subB, vì vậy tôi cần truy xuất toàn bộ bản ghi cho mỗi nhóm con. Ai đó làm ơn giúp tôi với. @farzane
quản trị 7798
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.