繁体   English   中英

SQL:如何计算没有GROUP BY的值的总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM