【问题标题】: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

我该如何进行这项工作?

【问题讨论】:

    标签: join count aggregate-functions


    【解决方案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;
    

    【讨论】:

    • 谢谢!第一个选项正是我需要的!
    猜你喜欢
    • 2021-05-08
    • 1970-01-01
    • 2019-08-02
    • 2015-01-08
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多