2012-03-03 60 views
39

Nếu tôi có một bảng và dữ liệu như thế này:SQL Sắp xếp theo Đếm

ID | Name | Group 

1 Apple  A  

2 Boy  A 

3 Cat  B 

4 Dog  C 

5 Elep  C 

6 Fish  C 

và tôi muốn đặt nó theo tổng của Tập đoàn từ nhỏ nhất đến giá trị lớn nhất, chẳng hạn như: A - 2 hồ sơ , B - 1 kỷ lục, C - 3 hồ sơ, vì vậy nó sẽ trở thành:

3 Cat  B 

1 Apple  A  

2 Boy  A 

4 Dog  C 

5 Elep  C 

6 Fish  C 

tôi đã cố gắng

$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)"; 

bu nó chỉ trả về một kết quả cho tôi.

Có bất kỳ gợi ý nào không? Cảm ơn bạn.

+0

kiểm tra câu trả lời của tôi và cho tôi biết nếu đó là tốt với bạn ... còn tôi có cột GROUP_VALUE ... –

Trả lời

83

Trước tiên, bạn cần phải tổng hợp dữ liệu, điều này có thể được thực hiện bằng mệnh đề GROUP BY:

SELECT Group, COUNT(*) 
FROM table 
GROUP BY Group 
ORDER BY COUNT(*) DESC 

Từ khóa DESC cho phép bạn hiển thị số lượng cao nhất đầu tiên, ORDER BY theo thứ tự mặc định theo thứ tự tăng dần sẽ hiển thị số lượng thấp nhất trước tiên.

+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn, nhưng nó chỉ trả về một kết quả cho mỗi nhóm? chẳng hạn như: Cat, B | Apple, A | Dog, C –

+1

Bạn có đang chạy mã này hoặc một số mã khác không? Dựa trên bảng đầu tiên bạn cung cấp kết quả của truy vấn này sẽ là: C 3 A 2 B 1 –

+0

Tôi hiểu rồi, tôi hiểu ngay bây giờ. Cảm ơn bạn rất nhiều vì câu trả lời và trả lời của bạn. –

3

Hãy thử:

SELECT count(*),group FROM table GROUP BY group ORDER BY group 

để đặt hàng theo số lượng giảm dần làm

SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC 

chí nhóm này kết quả theo các group cột trả lại groupcount và sẽ trả lại trật tự trong group trật tự

+0

Cám ơn asnwer của bạn, tôi đã thử nó nhưng nó trả lại cho tôi một kết quả cho mỗi nhóm? chẳng hạn như: Cat, B | Apple, A | Chó, C. –

+0

@IreneLing Tôi không bao gồm Tên trong câu lệnh chọn - kiểm tra xem nó – ManseUK

+0

Được rồi, cảm ơn câu trả lời và câu trả lời của bạn. –

2
SELECT * FROM table 
group by `Group` 
ORDER BY COUNT(Group) 
+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn. –

2
SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group 

hoặc để đặt hàng bởi số lượng

SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC 
+0

Cảm ơn câu trả lời của bạn. –

0

Dưới đây mang lại cho tôi trái ngược với những gì bạn có. (Thông báo Tập đoàn cột)

SELECT 
    * 
FROM 
    myTable 
GROUP BY 
    Group_value, 
    ID 
ORDER BY 
    count(Group_value) 

Hãy cho tôi biết nếu điều này là tốt với bạn ...

Tôi cố gắng để có được những gì bạn muốn quá ...

+0

Cảm ơn câu trả lời của bạn, nhưng xin lỗi nó đã không cho tôi kết quả chính xác. –

0

Hãy thử sử dụng dưới đây Query:

SELECT 
    GROUP, 
    COUNT(*) AS Total_Count 
FROM 
    TABLE 
GROUP BY 
    GROUP 
ORDER BY 
    Total_Count DESC 
0

Q. Liệt kê tên của từng chương trình và số lần lưu trữ khác nhau. Liệt kê chương trình đã được tổ chức thường xuyên nhất trước tiên.

event_id show_id event_name judge_id 
0101 01 Dressage  01 
0102 01 Jumping   02 
0103 01 Led in   01 
0201 02 Led in   02 
0301 03 Led in   01 
0401 04 Dressage  04 
0501 05 Dressage  01 
0502 05 Flag and Pole 02 

Ans:

select event_name, count(show_id) as held_times from event 
group by event_name 
order by count(show_id) desc