Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Làm thế nào để sắp xếp theo số trong SQL?

Vấn đề:

Bạn đã tổng hợp dữ liệu thành các nhóm, nhưng bạn muốn sắp xếp các bản ghi theo thứ tự giảm dần theo số phần tử trong nhóm.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng tên là user với dữ liệu trong các cột sau:id , first_name , last_namecountry .

id first_name last_name quốc gia
1 Lisa Williams Anh
2 Gary Anders Ba Lan
3 Tom Williams Ba Lan
4 Michael Màu nâu Pháp
5 Susan Smith Hoa Kỳ
6 Anne Jones Hoa Kỳ
7 Ellie Miller Ba Lan

Hãy tạo một báo cáo về người dùng của chúng tôi. Chúng tôi sẽ nhóm các kết quả theo country và đếm số lượng người dùng từ mỗi quốc gia. Nhưng chúng tôi cũng sẽ sắp xếp các nhóm theo thứ tự giảm dần theo số lượng người dùng. Bằng cách đó, các quốc gia có số lượng người dùng lớn nhất sẽ xuất hiện ở trên cùng.

Giải pháp:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id) DESC ;
country số lượng (id)
Ba Lan 3
Hoa Kỳ 2
Anh 1
Pháp 1

Thảo luận:

Để sắp xếp các bản ghi đã chọn theo số phần tử trong mỗi nhóm, bạn sử dụng ORDER BY mệnh đề.

Bước đầu tiên là sử dụng GROUP BY mệnh đề để tạo các nhóm (trong ví dụ của chúng tôi, chúng tôi nhóm theo country cột). Sau đó, trong mệnh đề ORDER BY, bạn sử dụng hàm tổng hợp COUNT, hàm này đếm số giá trị trong cột bạn chọn; trong ví dụ của chúng tôi, chúng tôi đếm các ID riêng biệt bằng COUNT(id) . Điều này có hiệu quả đếm số phần tử trong mỗi nhóm. ORDER BY mệnh đề sau đó sắp xếp các nhóm theo phép tính đó.

Như thường lệ, bạn có thể sử dụng cả thứ tự tăng dần hoặc giảm dần với ORDER BY . Nếu bạn muốn thứ tự giảm dần (như trong ví dụ này), bạn sử dụng DESC từ khóa. Thứ tự tăng dần không cần bất kỳ từ khóa nào vì đó là từ khóa mặc định, nhưng bạn có thể sử dụng ASC từ khóa nếu bạn muốn rõ ràng. Đây là cùng một ví dụ nhưng với các kết quả được sắp xếp theo thứ tự tăng dần:

Giải pháp:

SELECT country,
 COUNT(id) 
FROM user
GROUP BY  country
ORDER BY COUNT(id);

Đây là kết quả:

country số lượng (id)
Anh 1
Pháp 1
Hoa Kỳ 2
Ba Lan 3

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn luôn cần một cơ sở dữ liệu cho ứng dụng của mình?

  2. Xử lý xác nhận email trong khi đăng ký trong Flask

  3. Vui vẻ với nén (columnstore) trên một bàn rất lớn - phần 2

  4. Theo dõi cập nhật tự động cho thống kê

  5. Mô hình Dịch vụ PAAS hoạt động như thế nào?