Mysql 如何每天计算一个字段,然后按年和周分组
如果我有一个包含两列的数据库,日期和帐户,我想先每天计算帐户数,然后按周分组。我的代码错了多少,怎么做? 我稍微编辑了一下我的代码,我从一开始就没有正确思考。我希望第48周的总数是9Mysql 如何每天计算一个字段,然后按年和周分组,mysql,date,count,sum,Mysql,Date,Count,Sum,如果我有一个包含两列的数据库,日期和帐户,我想先每天计算帐户数,然后按周分组。我的代码错了多少,怎么做? 我稍微编辑了一下我的代码,我从一开始就没有正确思考。我希望第48周的总数是9 SELECT date, account, (SELECT date, COUNT(DISTINCT account) FROM t1 GROUP BY date ) AS sum FROM t1 GROUP BY YEARWEEK(date) 您似乎在寻找一个简单的聚合查询,其中包含计数(不同的…):
SELECT date, account,
(SELECT date, COUNT(DISTINCT account)
FROM t1
GROUP BY date
) AS sum
FROM t1
GROUP BY YEARWEEK(date)
您似乎在寻找一个简单的聚合查询,其中包含
计数(不同的…)
:
注意:yearweek();如果您的数据跨越几年,这比week()
要好
编辑
从评论中,您需要两个级别的聚合:
select yearweek(dy) year_week, sum(cnt) cnt_account
from (
select date(t1.date) dy, count(distinct t1.account) cnt
from t1
group by date(t1.date)
) t
group by yearweek(dy)
order by year_week
请在您的问题中添加示例数据。请参阅:此代码的值为3,因为它每周计数不同。我希望它每天都能计数,然后在几周内进行总结。所以这个值应该是9。
select yearweek(dy) year_week, sum(cnt) cnt_account
from (
select date(t1.date) dy, count(distinct t1.account) cnt
from t1
group by date(t1.date)
) t
group by yearweek(dy)
order by year_week