【发布时间】:2014-08-04 13:38:30
【问题描述】:
我有一张表格可以跟踪多个网站的活动。每行的格式如下:(日期、时间、网站、点击次数) Hour 字段是一个介于 0 和 23 之间的数字,代表一整小时(例如,22 表示 22:00 和 22:59 之间的任何点击)。
我想找出每个网站总体上最慢的时间,这意味着输入应该类似于 (Website, Hour)。
为了做到这一点,我想我应该有一个嵌套查询来找到每个网站每天的最低点击量,然后计算 Hour 的值(同样,每天每个网站),然后查看哪个值最大。
我还是 SQL 的新手,所以我在正确使用 min() 函数时遇到了困难,只能找到特定日期和网站的最小值。然后我在对特定网站使用 count() 时遇到了同样的问题。
我也很好奇我是否能得到最常见的最慢的小时,但也许是最慢的 3 小时,但至少在我看来,这似乎真的使问题复杂化了。
对于第一个嵌套查询,我考虑过这样的事情:
SELECT DISTINCT Date Date_t, Website Website_t, Hour,
(SELECT min(Hits) from HITS_TABLE WHERE Date=Date_t and Website=Website_t) as MinHits
FROM HITS_TABLE
但不仅计算需要异常长的时间,它还为每个小时的值提供了多个 (Date_t, Website_t, Hour, min(Hits)) 条目,所以我认为我没有这样做以最聪明,也不是最有效的方式。
提前感谢您的帮助!
【问题讨论】:
-
考虑提供适当的 DDL(和/或 sqlfiddle)以及所需的结果集
-
发布您创建此类查询的最佳尝试,可能是伪代码。
-
完成,希望没问题。
-
这是greatest-n-per-group问题的变体,其中有很多MySQL的例子。