繁体   English   中英

每个日期的所有唯一值的SQL总和

[英]SQL sum of all unique values per date

所以这将是我的第一个询问,宇!

我试图在每个相应的日期代码的列中组合类似的值。 因此对于日期5213,使用下面的示例表,我想返回给定事件的所有可能组合的总和。

表格示例:

╔══════╦═════════╦═════════╦═════════╗
║ Date ║ Event1  ║ Event2  ║ Event3  ║
╠══════╬═════════╬═════════╬═════════╣
║ 5213 ║    A    ║    C    ║    E    ║
║ 5213 ║    A    ║    D    ║    E    ║
║ 5212 ║    A    ║    D    ║    F    ║
║ 5212 ║    A    ║    C    ║    F    ║
║ 5212 ║    B    ║    D    ║    F    ║
║ 5212 ║    A    ║    D    ║    F    ║
║ 5212 ║    B    ║    D    ║    F    ║
╚══════╩═════════╩═════════╩═════════╝

我希望看到的回报:

╔══════╦══════════════╦════════════════╗
║ Date ║ Comb_Event   ║ Count_of_Event ║
╠══════╬══════════════╬════════════════╣
║ 5213 ║     ACE      ║       1        ║
║ 5213 ║     ADE      ║       1        ║
║ 5212 ║     ADF      ║       2        ║
║ 5212 ║     ACF      ║       1        ║
║ 5212 ║     BDF      ║       2        ║
╚══════╩══════════════╩════════════════╝

我不确定如何连接值,以及如何在单独的列中计算所述值。 任何方向将不胜感激。

谢谢!

组合值的方式取决于数据库。 那是问题的唯一棘手的部分,否则就是基本的SQL。 这是使用标准concat()函数的示例:

select date, concat(event1, event2, event3) as comb_event, count(*)
from example
group by date, concat(event1, event2, event3)
order by date, concat(event1, event2, event3);

取决于数据库,语法可能是:

select date, event1 || event2 || event3 as comb_event, count(*)
from example
group by date, event1 || event2 || event3
order by date, event1 || event2 || event3;

要么:

select date, event1 + event2 + event3 as comb_event, count(*)
from example
group by date, event1 + event2 + event3
order by date, event1 + event2 + event3;

或事件:

select date, event1 & event2 & event3 as comb_event, count(*)
from example
group by date, event1 & event2 & event3
order by date, event1 & event2 & event3;

这对SQL Server和MySQL均适用:

select count(*) as count_of_events, dates 
,concat(event1, event2, event3) as comb_event
from test
group by dates, concat(event1, event2, event3)

这是一个演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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