在sql中需要帮助
我需要按天对每天的max online进行分组(http://prntscr.com/a7j2sm)
我的sql select:
SELECT id, date, MAX(online)
FROM `record_online_1`
GROUP BY DAY(date)和result - http://prntscr.com/a7j3sp
这是不正确的结果,因为,max online是正确的,但是这个top在线的date和id是不正确的。我不知道如何解决这个问题..
更新:使用MySQL MariaDB
发布于 2016-02-25 06:28:14
执行聚合函数时,必须在SELECT语句中包含不属于GROUP BY子句中聚合函数的项。在T-SQL中,如果不按"id“分组,就不能执行上面的查询。然而,一些数据库系统允许您放弃这个规则,但是它不够聪明,不知道它应该带回给您哪个ID。例如,只有在该段的所有"ids“都相同的情况下,才应该这样做。
那么你应该怎么做呢?分两步完成此操作。第一步,找出最大值。您将丢失ID和DATETIME数据。
SELECT DAY(date) AS Date, MAX(online) AS MaxOnline
FROM `record_online_1` GROUP BY DAY(date)上面的命令将为你提供一个日期列表,其中包含每天的最大值。内部连接到原始的"record_online_1“表,具体连接日期和最大值。您可以使用CTE、临时表、子查询等来执行此操作。
https://stackoverflow.com/questions/35614214
复制相似问题