【发布时间】:2020-04-09 13:51:20
【问题描述】:
我有一些看起来像这样的数据:
---------------------------------------------
ID |EVENTDATETIME |CATEGORY |SOMEPROPERTY
---------------------------------------------
1 |20/03/2020 14:30 |CAT A |1
2 |20/03/2020 16:10 |CAT B |1
3 |20/03/2020 09:14 |CAT A |1
4 |20/03/2020 10:26 |CAT A |0
5 |21/03/2020 11:31 |CAT B |1
6 |21/03/2020 10:26 |CAT B |0
7 |22/03/2020 11:31 |CAT A |1
---------------------------------------------
基本上我需要(在 SQL 中)以某种方式将这些数据转换为类似这样的内容:
---------------------------------------------
DAY |MONTH |YEAR |TOTAL ITEMS |SOMEPROPERTY%
---------------------------------------------
20 |MARCH |2020 |4 |75%
21 |MARCH |2020 |2 |50%
22 |MARCH |2020 |1 |100%
---------------------------------------------
其中 SOMEPROPERTY% 是属性设置为 1(可以是 1 或 0)的当天总项目的百分比。
我可能还需要添加 CATEGORY 作为额外级别,以便数据也按此分组:
-------------------------------------------------------
DAY |MONTH |YEAR |CATEGORY |TOTAL ITEMS |SOMEPROPERTY%
-------------------------------------------------------
20 |MARCH |2020 |CAT A |3 |66%
20 |MARCH |2020 |CAT B |1 |100%
21 |MARCH |2020 |CAT B |2 |50%
22 |MARCH |2020 |CAT A |1 |100%
-------------------------------------------------------
有人可以帮忙吗?
需要是单个 SQL 语句 - 我尝试使用 GROUP BY 执行它,但它变得非常混乱并且给出了奇怪的结果。我认为 PIVOT 可能是可能的,但我找不到一个很好的例子,而且它不是最容易使用的命令。
n.b.我知道这类事情通常会在表示层中完成,而不是直接在 SQL 中完成,但对于需要的地方,我没有该选项。
谢谢。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
标签: sql group-by pivot summarization