Mysql按月份分组的计数总和
手头有个棘手的问题。 我如何计算此服务提供的用户总数Mysql按月份分组的计数总和,mysql,Mysql,手头有个棘手的问题。 我如何计算此服务提供的用户总数 SELECT MONTH(VisitTime) AS mon, COUNT( distinct IP) AS usersbymonth FROM stats WHERE YEAR( VisitTime) = YEAR( current_date ) GROUP BY mon 棘手的是,汇总和计数(不同的IP)提供更低的信息。 计数(全年不同)。这是因为mon的GROUP允许相同的IP在多个月内存在 现在,结果显示基本正确。M
SELECT
MONTH(VisitTime) AS mon,
COUNT( distinct IP) AS usersbymonth
FROM stats
WHERE
YEAR( VisitTime) = YEAR( current_date )
GROUP BY mon
棘手的是,汇总和计数(不同的IP)提供更低的信息。 计数(全年不同)。这是因为mon的GROUP允许相同的IP在多个月内存在
现在,结果显示基本正确。Month number | usersbymonth,如果你去年进行了目标查询,结果将是12个月前的用户 那么我如何计算用户数的总和呢?我说得对吗SELECT mon, SUM(usersbymonth) FROM
(SELECT
MONTH(VisitTime) AS mon,
COUNT( distinct IP) AS usersbymonth
FROM stats
WHERE
YEAR( VisitTime) = YEAR( current_date )
GROUP BY mon)
如果您想要每个月添加groupbymon
更新
SELECT
MONTH(VisitTime) AS mon,
COUNT( distinct IP) AS usersbymonth
FROM stats
WHERE
YEAR( VisitTime) = YEAR( current_date )
GROUP BY mon
UNION -- Last ROW
SELECT mon, SUM(usersbymonth) FROM (
SELECT
MONTH(VisitTime) AS mon,
COUNT( distinct IP) AS usersbymonth
FROM stats
WHERE
YEAR( VisitTime) = YEAR( current_date )
GROUP BY mon)
因此,如果用户X在1月和3月都来自IP,您只希望将其计为1次访问,而您当前的查询将其计为2次不同的访问?您必须每年进行一次单独的查询和分组,因为每月分组会破坏在这些“不同”访问中进行不同查询的任何机会。显示的基本查询会按照我的要求执行所有操作。3月和1月访问的用户数计为2。我只想把所有月份的总数加起来,这样我就可以在每月统计%的用户是的。结果还可以,但是。。第二种方法和我的方法一样,只是用更复杂的方式。第一个结果就是我要找的数字,但我只希望总数是第13行,或者是一个查询中每行的一个额外列。你的意思是希望最后一行的结果是?是的。这样地。1月50日、2月50日、3月50日等共计150个月,但到了月份仍有差异,因此总和(usersbymonth)将提供正确答案。。但是他**我如何将其实现到查询:)谢谢molderf。现在运行良好,但需要重新思考,因为这是一个非常缓慢的查询。