我正在编写对数据集的查询,并将该表作为CTE(T3) (表T3的DDL和DML语句如下所示)
games | regions | gold | silver | bronze | total |
---|---|---|---|---|---|
1896 Summer | Greece | 2 | 4 | 4 | 10 |
1896 Summer | UK | 3 | 1 | 1 | 5 |
1896 Summer | Switzerland | 0 | 0 | 0 | 0 |
1896 Summer | USA | 8 | 4 | 1 | 13 |
1896 Summer | Germany | 7 | 1 | 0 | 8 |
1896 Summer | France | 1 | 2 | 1 | 4 |
1896 Summer | Hungary | 0 | 1 | 0 | 1 |
1896 Summer | Australia | 2 | 0 | 1 | 3 |
注:T3的DDL和DML语句:
DDL语句:
create table t3 (games varchar(20), regions varchar(20), gold int, silver int, bronze int, total int);
个
和DML语句包括:
insert into t3 values ('1896 Summer', 'Greece', 2, 4, 4, 10);
insert into t3 values ('1896 Summer', 'UK', 3, 1, 1, 5);
insert into t3 values ('1896 Summer', 'Switzerland', 0, 0, 0, 0);
insert into t3 values ('1896 Summer', 'USA', 8, 4, 1, 13);
insert into t3 values ('1896 Summer', 'Germany', 7, 1, 0, 8);
insert into t3 values ('1896 Summer', 'France', 1, 2, 1, 4);
insert into t3 values ('1896 Summer', 'Hungary', 0, 1, 0, 1);
insert into t3 values ('1896 Summer', 'Australia', 2, 0, 1, 3);
为此,我写了一个查询:
select distinct games,
concat(max(regions) over (partition by games order by gold desc), "-", max(gold) over(partition by games)) as gold_count,
concat(max(regions) over (partition by games order by silver desc, regions), "-", max(silver) over(partition by games)) as silver_count,
concat(max(regions) over (partition by games order by bronze desc, regions), "-", max(bronze) over(partition by games)) as bronze_count,
concat(max(regions) over (partition by games order by total desc), "-", max(total) over(partition by games)) as total
from t3;
从这个查询中,我得到了以下结果
games | gold_count | silver_count | bronze_count | total |
---|---|---|---|---|
1896 Summer | USA-8 | Greece-4 | Greece-4 | USA-13 |
1896 Summer | USA-8 | USA-4 | Greece-4 | USA-13 |
1896 Summer | USA-8 | USA-4 | UK-4 | USA-13 |
1896 Summer | USA-8 | USA-4 | USA-4 | USA-13 |
我如何才能得到这样的结果:
games | gold_count | silver_count | bronze_count | total |
---|---|---|---|---|
1896 Summer | USA-8 | Greece-4 | Greece-4 | USA-13 |
1896 Summer | USA-8 | USA-4 | Greece-4 | USA-13 |
或者像这样:
games | gold_count | silver_count | bronze_count | total |
---|---|---|---|---|
1896 Summer | USA-8 | Greece-4 & USA-4 | Greece-4 | USA-13 |