我有一个非常简单的表格,如下:
CREATE TABLE IF NOT EXISTS LuxLog (
Sensor TINYINT,
Lux INT,
PRIMARY KEY(Sensor)
)
它包含来自不同传感器的数千条日志。
我想获取所有传感器的Q1和Q3。
我可以为每个数据执行一次查询,但最好为我从一个查询中获取所有传感器的Q1和Q3(同时返回)。
我认为这是一个相当简单的操作,因为四分位数被广泛用于频率计算中并且是主要统计变量之一。但事实是,我发现了大量过于复杂的解决方案,而我希望找到一些简洁而简单的东西。
有人能给我一些提示吗?
编辑:这是我在网上找到的代码片段,但它对我不起作用。
SELECT SUBSTRING_INDEX(
SUBSTRING_INDEX(
GROUP_CONCAT( -- 1) make a sorted list of values
Lux
ORDER BY Lux
SEPARATOR ','
)
, ',' -- 2) cut at the comma
, 75/100 * COUNT(*) -- at the position beyond the 90% portion
)
, ',' -- 3) cut at the comma
, -1 -- right after the desired list entry
) AS `75th Percentile`
FROM LuxLog
WHERE Sensor=12
AND Lux<>0
我得到的返回值是1,但它应该是可以被10整除的数字(10、20、30......1000)。
NTILE()
)。 - John Bollinger