我有一个包含多行的表,对于每一行我都需要知道最常见的值.
例:
row_1有
car
boat
car
car
truck
truck
plane
car
car
Run Code Online (Sandbox Code Playgroud)
作为其价值观.
我需要知道什么是最常见的价值(在这种情况下是汽车).我有几个想法,但由于我必须为30行做这个,我想要一个简单而不是CPU密集的查询.
就像MIN()
我AVG()
有时需要整数值最常见的出现值(也称为众数)。这可以这样获得:
SELECT column, COUNT(*) AS x
FROM table
GROUP BY column
ORDER BY x DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
这实在是太拗口了。我真的很想像这样使用它:MODE()
SELECT AVG(`sTemperature`), MODE(`sSwitch`), MODE(`sDoor`)
FROM `stats`;
Run Code Online (Sandbox Code Playgroud)
有没有办法使上述查询适用于整数?对于布尔值,我认为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
Run Code Online (Sandbox Code Playgroud)
注意:还有其他 SO 问题,例如Select most common value from …
mysql ×2