Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво може да направи агрегатната функция в клаузата ORDER BY?

Резултатите ви са по-ясни, ако действително изберете обобщените стойности вместо колони от таблицата:

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

Това ще върне сумата от всички идентификатори. Това разбира се е безполезен пример, тъй като агрегирането винаги ще създава само един ред, следователно няма нужда от подреждане. Причината да получите ред qith колони във вашата заявка е, че MySQL избира един ред, не произволно, но не и детерминиран. Случва се така, че това е първата колона в таблицата във вашия случай, но други може да получат друг ред в зависимост от механизма за съхранение, първичните ключове и така нататък. Следователно агрегирането само в клаузата ORDER BY не е много полезно.

Това, което обикновено искате да направите, е да групирате по определено поле и след това да подредите резултатния набор по някакъв начин:

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

Сега това е по-интересно запитване! Това ще ви даде един ред за всеки плод заедно с общия брой за този плод. Опитайте да добавите още ябълки и подреждането всъщност ще започне да има смисъл:

Пълна таблица:

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

Запитването по-горе:

+--------+----------+
| 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. Фатална грешка:Извикване на недефинирана функция session_register()

  2. Използване на Mysql в командния ред в osx - командата не е намерена?

  3. MySQL Workbench получава достъп за администриране?

  4. Не може да се увеличи max_open_files за Mysql max-connections в Ubuntu 15

  5. Как да внедря функцията запомни ме?