sql >> Database teknologi >  >> RDS >> Mysql

MySQL hvordan man får gennemsnit af værdier ind i et specifikt område

Du kan bygge en liste over områder ved hjælp af UNION ALL og 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

Bemærk, at ovenstående forespørgsel vil sætte 20.9999 inde i [0-21) og 21.0000 inde i [21-34) rækkevidde.



  1. Returner kolonneoplysninger for en lagret procedure i SQL Server:sp_sproc_columns

  2. Oracle ugyldigt nummer i klausul

  3. Ser på databasen på heroku

  4. Sådan gemmer du underattributter i 3. tabel i laravel