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

MySQL jak dostat průměr hodnot do určitého rozsahu

Seznam rozsahů můžete vytvořit pomocí UNION ALL a LEFT JOIN s tím:

SELECT CONCAT(IFNULL(ranges.min, '∞'), '-', IFNULL(ranges.max, '∞')) AS `range`, avg(value) AS avg
FROM (
    SELECT 0 AS min, 21 AS max UNION ALL
    SELECT 21, 34 UNION ALL
    SELECT 34, 64 UNION ALL
    SELECT 64, NULL
) AS ranges
LEFT JOIN t ON (ranges.min IS NULL OR value >= ranges.min) AND
               (ranges.max IS NULL OR value <  ranges.max)
GROUP BY ranges.min, ranges.max

Všimněte si, že výše uvedený dotaz vloží 20.9999 uvnitř [0-21) a 21.0000 uvnitř [21-34) rozsah.



  1. Hašování pomocí kryptování v PHP

  2. Jak zobrazím běžící procesy v Oracle DB?

  3. Co je předávání parametrů do SQL a proč to potřebuji?

  4. Django 1.8 Migrace s Postgres BDR 9.4.1