我正在尝试根据现有表创建过滤表。根据位置(tmcs),当前表格包含24天内每小时每分钟的行数。
我想将此表过滤到另一个表中,该表基于位置(tmcs)24天内每行只有1小时
这是我认为可以做到的sql语句......
SELECT
Time_Format(t.time, '%H:00') as time, ROUND(AVG(t.avg), 0) as avg,
tmc, Date, Date_Time FROM traffic t
GROUP BY time, tmc, Date
问题是我仍然有247,000行受影响......根据简单的数学,我应该只有:
地点(TMCS):14 一天中的小时数:24 跟踪天数:24 总数= 14 * 24 * 24 = 12,096
我的原始表有477,277行 当我从这个查询中创建一个新表时,我得到247,000这是没有意义的,所以我的查询一定是错的。
我使用此方法而不是where子句的原因是因为我想找到每小时的平均速度(平均)。这不是强制性的,所以我可以使用Where子句来计算时间,但我根本不知道如何根据*:00这样做 任何帮助将不胜感激
答案 0 :(得分:0)
修复GROUP BY所以它是标准的,而不是随机的MySQL扩展
SELECT
Time_Format(t.time, '%H:00') as time,
ROUND(AVG(t.avg), 0) as avg,
tmc, Date, Date_Time
FROM traffic t
GROUP BY
Time_Format(t.time, '%H:00'), tmc, Date, Date_Time
使用SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
运行此命令以查看其他RDBMS将为您提供的错误并使MySQL正常工作