[英]SQL: How to count the sum of values without GROUP BY
我有下表:
visitorId visitNumber DATE
1 1 20180101
1 2 20180101
1 3 20180105
2 1 20171230
2 2 20180106
我想返回的是:
visitorId totalVisits max_visits_in_1_day
1 3 2
2 2 1
我设法使用max_visits_in_1_day
来使一切正常max_visits_in_1_day
:
SELECT visitorId,
MAX(visitNumber) - MIN(visitNumber) + 1 as totalVisits,
GROUP BY visitorId
我需要做的是改进代码, max_visits_in_1_day
添加max_visits_in_1_day
。 像MAX(COUNT(GROUP BY(DATE)))
我首先尝试添加MAX(COUNT(DATE))
,但这会汇总所有日期,并且实际上并没有寻找最大的唯一日期。 从某种意义上说,我需要在DATE进行GROUP BY,然后将计数加起来。
我尝试添加GROUP BY visitorId, DATE
但这会创建额外的行。
您将必须执行以下两个步骤:
SELECT visitorId, SUM(perDay) AS totalVisits, MAX(perDay) AS max_visits_in_1_day
FROM
(SELECT visitorId, COUNT(visitNumber) AS perDay, DATE
FROM myTable
GROUP BY visitorId, DATE) A
GROUP BY visitorId
您可以尝试以下查询-
SELECT visitorId
,COUNT(visitNumber) totalVisits
,mv1d.count max_visits_in_1_day
FROM YOUR_TABLE YT
INNER JOIN (SELECT visitorId, MAX(COUNT(DATE)) count
FROM YOUR_TABLE YT1)
ON YT.visitorId = YT1.visitorId
GROUP BY visitorId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.