gpt4 book ai didi

php - 为什么我的 MySQL Group By Hours vs Half Hours 文件不显示相同的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:17 26 4
gpt4 key购买 nike

我需要能够以 15 分钟的增量在不同的显示类型中显示我拥有的数据。我有两个问题给我带来了麻烦。一个以半小时为单位显示数据,另一个以小时为单位显示数据。唯一的问题是查询之间的数据总数会发生变化。它不计算时间范围之间发生的数据,只计算时间范围内发生的数据。

例如:早上 7 点 15 分会发生 5 件事。 2 个在早上 7:30 发生,4 个在早上 7:00 显示。

15 分钟 View 显示所有数据。半小时 View 显示上午 7:00 和上午 7:30 的数据,但忽略上午 7:15。
小时显示只显示早上7:00的数据

这是我的查询:

$query="SELECT * FROM data WHERE startDate='$startDate' and queue='$queue' GROUP BY HOUR(start),floor(minute(start)/30)";

$query="SELECT * FROM data WHERE startDate='$startDate' and queue='$queue' GROUP BY HOUR(start) ";

我怎样才能像我那样分组提取数据,但包含所有数据?

问题是数据在 mysql 表中的存储方式吗?目前我有一列日期 (2010-03-29) 和一列时间 (00:00) 我需要将它们转换成其他内容吗?

最佳答案

您对“分组依据”的理解有误。您不会“分组”多个记录,因此您可以通过单个 fetchrow() 调用获取所有记录。发生的情况是数据库会将所有匹配 group-by 子句的记录折叠成一条记录。拿一个简单的游戏比分表:

id   playername  score
----------------------
1 John 23
2 Fred 12
3 Jack 9
4 John 18

如果您执行以下查询:SELECT id, playername, score FROM table GROUP BY playername,您将获得以下结果集:

id   playername  score
----------------------
1 John 23
2 Fred 12
3 Jack 9

嘿!约翰#4 去哪儿了?他消失了,因为 id#4 的行与 GROUP BY 子句匹配,并且已折叠到被发现匹配的第一行 (#1)。它本身不是很有用,您现在已经丢失了与 id #4 关联的所有数据。但这正是聚合函数(求和、计数、平均值等...)发挥作用的地方:SELECT id, playername, SUM(score) FROM table GROUP BY playername:

id   playername  score
----------------------
1 John 41 <---notice the change (23 + 18 = 41)
2 Fred 12
3 Jack 9

对于您的查询,您有两个选择:

  1. 按原样保留 GROUP BY,并在查询中对分组数据进行任何计算(求和、计数、平均等...),以便获得每个匹配时间段的汇总结果
  2. 删除 GROUP BY 子句,在您的应用程序中执行您想要的任何计算
  3. 将 GROUP BY 子句转换为查询中的结果字段,因此您可以根据这些新列在代码中处理每个周期:SELECT *, HOUR(start), FLOOR(MINUTE(start)/30 ) 来自数据

关于php - 为什么我的 MySQL Group By Hours vs Half Hours 文件不显示相同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com