2012-02-10 11 views
6
select count(*) as count from table 
group by foreign_id order by count 

Điều này trả về một số kết quả phù hợp cho mỗi id nước ngoài. Tuy nhiên những gì đang tìm kiếm là tóm tắt kết quả.Làm cách nào để đếm số nhóm được nhóm trả về?

Vì vậy, kết quả sẽ là:

10 results grouping 1 elements 
5 results grouping 2 elements 
7 results grouping 7 elements 
+1

Xin giải thích những gì bạn có ý nghĩa bởi "_n_ kết quả nhóm các phần tử _n_" Những gì sẽ được nhóm lại? –

+1

Tôi không nhận được điều này '5 kết quả nhóm 2 yếu tố'. '5' và' 2' đại diện cho điều gì? –

+1

Khá khó giải thích. Hiện tại nếu nó khớp với phím nước ngoài một khi nó sẽ nói 1 trận đấu thì nó sẽ chuyển sang trận tiếp theo và nói 1 trận đấu rồi hai trận đấu cho nhau. Những gì im tìm kiếm để làm là xác định bao nhiêu lần tìm thấy 1 trận đấu của nó. Hoặc bao nhiêu lần tìm thấy 3 kết quả phù hợp. –

Trả lời

11

Ok, đã nhận nó. Tiêu đề của câu hỏi expainls nó tốt hơn so với các câu hỏi riêng của mình :)

Bạn cần phải đầu tiên biết bao nhiêu lần mỗi FK xuất hiện:

select count(*) as GroupAmount from t1 
group by foreign_id 

Khi bạn có điều này, bạn phải nhóm chúng để có được số lần mỗi mục xuất hiện giống như cách trên. Điều này sẽ dẫn đến:

select GroupAmount, count(*) GroupAmountTimes from (
    select count(foreign_id) as GroupAmount from t1 
    group by foreign_id 
) as SubQuery 
group by GroupAmount 

Nhìn thấy nó trong hành động here

+1

liên kết tới sqlfiddle đã ngừng hoạt động :( – Shai

4

Đếm số lượng các nhóm trả về bởi một nhóm bằng cách:

select foreign_id as GroupAmount, count(foreign_id) as GroupAmountTimes 
from t1 
group by foreign_id 

http://sqlfiddle.com/#!2/35661/42