select gantryHex,AVG(timediff_minute),count(*) from gbupload GROUP BY gantryHex 怎么把AVG(timediff_minute)中的取平均值改成取中位数?
时间: 2024-05-06 21:21:50 浏览: 91
分组求中位数
您可以使用MySQL内置函数来计算中位数。以下是一个示例查询,可以将平均值替换为中位数:
```
SELECT gantryHex,
AVG(timediff_minute),
(SELECT timediff_minute
FROM (
SELECT @rownum:=@rownum+1 AS `row_number`,
u.timediff_minute
FROM gbupload u, (SELECT @rownum:=0) r
WHERE u.gantryHex = gbupload.gantryHex
ORDER BY u.timediff_minute) as x
WHERE x.row_number = FLOOR((@rownum+1)/2)
) as median_value,
COUNT(*)
FROM gbupload
GROUP BY gantryHex;
```
此查询使用了一个子查询来计算中位数。子查询首先使用用户定义的变量 `@rownum` 来构建一个列计数器 `row_number`。然后它按照 `timediff_minute` 对记录进行排序,并在每个记录上计算 `timediff_minute` 的中位数。最后,使用选择查询中的 `FLOOR((@rownum +1)/2)` 计算中位数的行数。
希望这可以回答您的问题!
阅读全文