gpt4 book ai didi

mysql - 获取每个日期的最高值

转载 作者:行者123 更新时间:2023-11-29 21:04:42 25 4
gpt4 key购买 nike

我有一个表,记录用户每次完成调查的时间。它看起来有点像这样:

    surveyID        author       timestamp
-----------------------------------------------
1 person1 1461840669000
2 person2 1461840670000
3 person1 1461840680000

我正在尝试运行一个查询,该查询会显示自 4 月 1 日以来每天排名最高的调查员(即每天进行调查次数最多的人)。

到目前为止我已经尝试过:

SELECT author,
COUNT (DISTINCT surveyid) AS num_surveys,
STRFTIME_UTC_USEC(creation_time*1000, "%Y-%m-%d") AS date,
FROM myTable
WHERE creation_time > 1459468800000 //since April 1st
GROUP BY date, author
ORDER BY 3 DESC,2 DESC;

这给了我这个结果:

author     num_surveys       date
------------------------------------
user1 116 2016-04-27
user2 109 2016-04-27
user3 99 2016-04-27
user3 102 2016-04-28
user1 98 2016-04-28
user2 97 2016-04-28

但是,我真的很想要每天的最高记录:

author     num_surveys       date
------------------------------------
user1 116 2016-04-27
user3 102 2016-04-28 etc...

我已经在不同的地方尝试了 MAX()TOP() 但到目前为止它们都没有工作,因此上面的查询示例让我最接近达到我想要的...任何建议将不胜感激。我对 SQL 很陌生!

编辑

感谢到目前为止的建议。已设法让它工作:

DEFINE INLINE TABLE A
SELECT author,
COUNT (DISTINCT featureid) AS num_surveys,
STRFTIME_UTC_USEC(creation_time*1000, "%Y-%m-%d") AS date,
FROM placesense.surveys
WHERE creation_time > 1459468800000
GROUP BY date, author
ORDER BY 3 DESC,2 DESC;

SELECT
MAX(num_surveys),
date
FROM A AS B
WHERE date = B.date
GROUP BY date

欢迎任何其他更有效的建议。

最佳答案

一个非常简单的方法是使用相关子查询:

select t.*
from t
where t.num_surveys = (select max(t2.num_surveys) from t t2 where t2.date = t.date);

注意:如果出现平局,这将返回日期的重复项。

关于mysql - 获取每个日期的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36915206/

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