Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uporządkuj rekordy zapytań SQL według częstotliwości

Zakładając, że chcesz wszystkie wiersze, ale uporządkowane według częstotliwości wartości w jakiejś kolumnie `col` , możesz to zrobić:

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;

co wyprodukuje

+----+--------+
| 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. Fluent NHibernate DuplicateMappingException z automappingiem

  2. Jak przyznać użytkownikowi uprawnienia dostępu zdalnego do serwera mysql?

  3. MySQL - CASE vs Instrukcja IF vs funkcja IF

  4. Jak zaktualizować MySQL 5.5 do 5.6 na Ubuntu 14.04

  5. zliczanie, ile razy skrypt jest wykonywany