要根据一个车站每5分钟的实时人数计算当天人数中位值,可以使用以下步骤:

  1. 创建一个包含时间戳和实时人数的表。例如:
CREATE TABLE station_data (
  timestamp DATETIME,
  num_people INT
);
  1. 将每5分钟的实时人数插入到表中。可以使用定时任务或者编写脚本来实现每5分钟插入一次数据。

  2. 使用以下SQL查询计算当天人数中位值:

SELECT
  AVG(num_people) as median
FROM (
  SELECT
    num_people,
    @rownum:=@rownum+1 as `row_number`,
    @total_rows:=CASE WHEN @rownum = 1 THEN COUNT(*) OVER() END as `total_rows`
  FROM
    station_data
    JOIN (SELECT @rownum:=0) r
  WHERE
    timestamp >= DATE(NOW())
    AND timestamp < DATE_ADD(DATE(NOW()), INTERVAL 1 DAY)
  ORDER BY
    num_people
) as `median_calculation`
WHERE
  `row_number` IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );

该查询使用子查询和变量来计算中位数。首先,将数据按照实时人数升序排序,并为每一行分配一个行号。然后,使用变量计算总行数,并使用行号计算中位数。最后,取出中位数行的实时人数,并计算平均值作为当天人数中位值。

注意:上述查询仅适用于MySQL 8.0及以上版本。如果使用的是旧版本的MySQL,可能需要使用不同的方法来计算中位数

MySQL 如何根据一个车站每5分钟的实时人数计算当天人数中位值

原文地址: https://www.cveoy.top/t/topic/gtQU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录