【发布时间】:2022-08-03 03:48:16
【问题描述】:
我有一张这样的红移表:
| date | filter_name1 | filter_value1 | filter_name2 | filter_value2 | total_cases | total_spent |
|---|---|---|---|---|---|---|
| 2022-01-01 | sex | male | state | Arizona | 15 | 123.1 |
| 2022-02-01 | sex | female | state | Ohio | 66 | 66.7 |
| 2022-02-01 | sex | male | state | Arizona | 12 | 54 |
| 2022-01-01 | sex | female | state | California | 11 | 121 |
| 2022-01-01 | sex | male | state | Arizona | 43 | 96.63 |
现在我想“合并”基于 filter_values 的行,其数字可以从 1 到 5 不等。我想将所有不同的日期推入一个数组。如果日期相等,它还应该将它们的 total_cases 和 total_spent 相加,并以与日期数组相同的顺序将它们推送到数组中。可以有比 2 更多的不同日期。
预期输出为:
| date | filter_name1 | filter_value1 | filter_name2 | filter_value2 | total_cases (sum) | total_spent (sum) |
|---|---|---|---|---|---|---|
| [\"2022-01-01\", \"2022-02-01\"] | sex | male | state | Arizona | [58, 12] | [219.73, 54] |
| [\"2022-01-01\", \"2022-02-01\"] | sex | female | state | Ohio | [0, 66] | [0, 66.7] |
| [\"2022-01-01\", \"2022-02-01\"] | sex | female | state | California | [11, 0] | [121, 0] |
我提出了下面的查询,但我不知道如何根据 filter_values 合并行)。
select listagg(distinct date, \', \') within group (order by filter_value1) as date,
listagg(distinct filter_value1) as filter_value1,
listagg(distinct filter_value2) as filter_value2,
SUM(total_spent) as total_spent from TABLE
group by date, filter_value1, filter_value2;
标签: sql database amazon-redshift