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

Подредете записи на SQL заявки по честота

Ако приемем, че искате всички редове, но подредени по честотата на стойностите в някаква колона `col` , можете да направите това:

CREATE TABLE tbl (id SERIAL, col VARCHAR(16));
-- INSERT so that `id` does not match frequency of values under `col`
INSERT INTO tbl (col) VALUES ('value1'), ('value2'), ('value3'),
                             ('value1'), ('value2'), ('value3'),
                             ('value1'), ('value2'),
                             ('value1'),
                             ('value1');

    SELECT id, tbl.col
      FROM tbl
INNER JOIN (  SELECT col, COUNT(1) AS freq
                FROM tbl
            GROUP BY 1) derived
           USING (col)
  ORDER BY derived.freq DESC;

което ще произведе

+----+--------+
| id | col    |
+----+--------+
|  4 | value1 |  <-- highest incidence
|  7 | value1 |
|  1 | value1 |
|  9 | value1 |
| 10 | value1 |
|  5 | value2 |
|  8 | value2 |
|  2 | value2 |
|  6 | value3 |  <-- lowest incidence
|  3 | value3 |
+----+--------+
10 rows in set (0.00 sec)



  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?

  2. Грешка (Код на грешка:1175) по време на изпълнение на команда за актуализиране на таблица с помощта на MySQL Workbench 5.2

  3. Как да създадете потребител в MySQL

  4. Защо заявката не е неуспешна с несъществуваща колона в подзаявката?

  5. Какво прави DELIMITER // в тригер?