Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa yang dapat dilakukan fungsi agregat dalam klausa ORDER BY?

Hasil Anda lebih jelas jika Anda benar-benar memilih nilai agregat alih-alih kolom dari tabel:

SELECT SUM(id) FROM plant ORDER BY SUM(id)

Ini akan mengembalikan jumlah semua id. Ini tentu saja merupakan contoh yang tidak berguna karena agregasi akan selalu membuat hanya satu baris, sehingga tidak perlu memesan. Alasan Anda mendapatkan baris kolom qith dalam kueri Anda adalah karena MySQL memilih satu baris, tidak secara acak tetapi juga tidak deterministik. Kebetulan itu adalah kolom pertama dalam tabel dalam kasus Anda, tetapi yang lain mungkin mendapatkan baris lain tergantung pada mesin penyimpanan, kunci utama, dan sebagainya. Agregasi hanya dalam klausa ORDER BY dengan demikian tidak terlalu berguna.

Apa yang biasanya ingin Anda lakukan adalah mengelompokkan berdasarkan bidang tertentu dan kemudian mengurutkan hasil yang ditetapkan dengan cara tertentu:

SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)

Nah, itu pertanyaan yang lebih menarik! Ini akan memberi Anda satu baris untuk setiap buah bersama dengan jumlah total untuk buah itu. Coba tambahkan beberapa apel lagi dan urutannya akan benar-benar mulai masuk akal:

Tabel lengkap:

+----+--------+
| id | fruit  |
+----+--------+
|  1 | banana |
|  2 | apple  |
|  3 | orange |
|  4 | apple  |
|  5 | apple  |
|  6 | banana |
+----+--------+

Kueri di atas:

+--------+----------+
| fruit  | COUNT(*) |
+--------+----------+
| orange |        1 |
| banana |        2 |
| apple  |        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. MySQL Ubah Kata Sandi Pengguna

  2. Masalah Pengkodean Karakter

  3. Dapatkan semua anak dengan id orang tua dan klausa di mana di mysql

  4. Kodekan API Pertama Anda Dengan Node.js dan Express:Hubungkan Database

  5. Bergabung dengan Tabel dari Database yang berbeda