如何在主表上加入按天聚合的数据
Posted
技术标签:
【中文标题】如何在主表上加入按天聚合的数据【英文标题】:How to join data aggregated by day on main table 【发布时间】:2021-02-12 13:15:35 【问题描述】:我希望能够在非聚合表中加入按天聚合的数据。
字段:id、日期
表格:案例
date id
1/1 31
1/1 22
1/1 36
1/1 44
1/2 51
1/2 64
我的最终结果应该是:
date id total_id_per_day
1/1 31 4
1/1 22 4
1/1 36 4
1/1 44 4
1/2 51 2
1/2 64 2
我尝试了以下方法,但没有按预期工作:
with idtotal as (select date, count(distinct id) as total_id_per_day from case group by date)
select c.date, c.id, idtotal.total_id_per_day
from case as c
left join idtotal on idtotal.date = case.date
我该如何进行这项工作?
【问题讨论】:
【参考方案1】:如果你的 SQL 版本支持解析函数,那么在这里使用COUNT
:
SELECT date, id, COUNT(id) OVER (PARTITION BY date) total_id_per_day
FROM yourTable
ORDER BY date;
如果您在没有分析函数的情况下遇到困难,请使用连接子查询来查找计数:
SELECT t1.date, t1.id, t2.cnt AS total_id_per_day
FROM yourTable t1
INNER JOIN
(
SELECT date, COUNT(id) AS cnt
FROM yourTable
GROUP BY date
) t2
ON t2.date = t1.date
ORDER BY
t1.date;
【讨论】:
谢谢!第一个选项正是我需要的!以上是关于如何在主表上加入按天聚合的数据的主要内容,如果未能解决你的问题,请参考以下文章