首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择按最大联机记录按日期排序的联机记录

选择按最大联机记录按日期排序的联机记录
EN

Stack Overflow用户
提问于 2016-02-25 06:10:59
回答 1查看 52关注 0票数 1

sql中需要帮助

我需要按天对每天的max online进行分组(http://prntscr.com/a7j2sm)

我的sql select:

代码语言:javascript
复制
SELECT id, date, MAX(online) 
FROM `record_online_1` 
GROUP BY DAY(date)

和result - http://prntscr.com/a7j3sp

这是不正确的结果,因为,max online是正确的,但是这个top在线的dateid是不正确的。我不知道如何解决这个问题..

更新:使用MySQL MariaDB

EN

回答 1

Stack Overflow用户

发布于 2016-02-25 06:28:14

执行聚合函数时,必须在SELECT语句中包含不属于GROUP BY子句中聚合函数的项。在T-SQL中,如果不按"id“分组,就不能执行上面的查询。然而,一些数据库系统允许您放弃这个规则,但是它不够聪明,不知道它应该带回给您哪个ID。例如,只有在该段的所有"ids“都相同的情况下,才应该这样做。

那么你应该怎么做呢?分两步完成此操作。第一步,找出最大值。您将丢失ID和DATETIME数据。

代码语言:javascript
复制
SELECT DAY(date) AS Date, MAX(online) AS MaxOnline
FROM `record_online_1` GROUP BY DAY(date)

上面的命令将为你提供一个日期列表,其中包含每天的最大值。内部连接到原始的"record_online_1“表,具体连接日期和最大值。您可以使用CTE、临时表、子查询等来执行此操作。

EDIT: I found an answer that is more eloquent than my own.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35614214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档