【发布时间】:2014-02-21 17:18:46
【问题描述】:
就像MIN() 和AVG() 一样,我有时需要整数值的最常见出现值(也称为模式)。这可以这样获得:
SELECT column, COUNT(*) AS x
FROM table
GROUP BY column
ORDER BY x DESC
LIMIT 1
而且那是相当拗口。我真的很想像这样使用它:MODE()
SELECT AVG(`sTemperature`), MODE(`sSwitch`), MODE(`sDoor`)
FROM `stats`;
有没有办法使上述查询适用于整数?
对于布尔值,我认为ROUND(AVG()) 很好。
可以在 MySQL 数据库中定义函数,但它们可以像 MIN() 或 AVG() 那样在数据集上工作吗?
因为我经常在里面使用它:
INSERT INTO `statsaggregates` (
`saMeasurements`, `saTemperature`, `saSwitch`, `saDoor`
) SELECT
COUNT(*) as 'saMeasurements',
AVG(`sTemperature`) as 'saTemperatureAvg',
MIN(`sTemperature`) as 'saTemperatureMin',
MAX(`sTemperature`) as 'saTemperatureMax',
MODE(`sSwitch`) as 'saSwitch',
MODE(`sDoor`) as 'saDoor'
FROM `stats`
WHERE 1
注意:还有其他 SO 问题,例如 Select most common value from a field in MySQL,询问如何计算模式。这个问题是关于在函数中完全像 AVG() 一样使用它。
【问题讨论】:
标签: mysql