sql >> Databasteknik >  >> RDS >> Mysql

MySQL hur man får medelvärden till ett specifikt intervall

Du kan skapa en lista med intervall med UNION ALL och LEFT JOIN med det:

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

Observera att ovanstående fråga kommer att lägga till 20.9999 inuti [0-21) och 21.0000 inuti [21-34) intervall.



  1. Få de första 10 oanvända manual_sequence-numren

  2. Hur använder jag SQL Server Compact Edition (CE) från Java?

  3. SQL Server Intellisense fungerar inte på *vissa* servrar

  4. Postgres jsonb-fråga på kapslat objekt