sql >> Database >  >> RDS >> Mysql

MySQL hoe het gemiddelde van waarden in een specifiek bereik te krijgen

U kunt een lijst met bereiken maken met behulp van UNION ALL en LEFT JOIN ermee:

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

Merk op dat de bovenstaande zoekopdracht 20.9999 . zal plaatsen binnen [0-21) en 21.0000 binnen [21-34) bereik.



  1. COUNT() versus COUNT_BIG() in SQL Server:wat is het verschil?

  2. com.mysql.jdbc.MysqlDataTruncation:Gegevensafbreking:gegevens te lang voor kolom 'column_name'

  3. Oracle Loader gebruiken om HBase-gegevens in Oracle-tabel te importeren

  4. hoe het installatieprogramma van de C#-venstertoepassing te publiceren