sql >> Databáze >  >> RDS >> Mysql

Seřaďte záznamy SQL dotazů podle frekvence

Za předpokladu, že chcete vše řádky, ale seřazené podle četnosti hodnot v některém sloupci `col` , můžete to udělat:

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;

které vyrobí

+----+--------+
| 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. Jak UTC_DATE() funguje v MariaDB

  2. Jak zkontrolovat databázi na nerootovaném zařízení Android

  3. Přečtěte si o tom, jak používat SQL Server Management Studio

  4. Jak uchovávat historii aktualizací záznamů v MySQL?