【发布时间】:2018-08-13 12:26:10
【问题描述】:
我有一个表,其中包含如下数据。
attr |time
----------------|--------------------------
abc |2018-08-06 10:17:25.282546
def |2018-08-06 10:17:25.325676
pqr |2018-08-05 10:17:25.366823
abc |2018-08-06 10:17:25.407941
def |2018-08-05 10:17:25.449249
我想将它们分组并按 attr 列逐行计数,并在其中创建其他列以显示它们每天的计数和百分比,如下所示。
attr |day1_count| day1_%| day2_count| day2_%
----------------|----------|-------|-----------|-------
abc |2 |66.6% | 0 | 0.0%
def |1 |33.3% | 1 | 50.0%
pqr |0 |0.0% | 1 | 50.0%
我可以使用 group by 显示一个计数,但无法找出如何将它们分成多个列。我尝试使用
生成第 1 天百分比SELECT attr, count(attr), count(attr) / sum(sub.day1_count) * 100 as percentage from (
SELECT attr, count(*) as day1_count FROM my_table WHERE DATEPART(week, time) = DATEPART(day, GETDate()) GROUP BY attr) as sub
GROUP BY attr;
但这也没有给我正确的答案,我得到的百分比全为零并计为 1。感谢任何帮助。我正在尝试在遵循 postgresql 语法的 Redshift 中执行此操作。
【问题讨论】:
-
您只需要2天吗?如果您的表格包含超过 2 天怎么办?
-
我的要求是做6天。但是一旦我得到两个答案,我想扩展。
-
四次几乎相同的答案。你还期待别的吗?
-
不,我无法访问数据库以测试查询。我正在尝试运行查询。一旦我可以测试它,我会标记答案。
标签: sql postgresql group-by amazon-redshift