考虑此表
+------------+----------------+-------------+
| date | region_name | population |
+------------+----------------+-------------+
| 2000-02-11 | Lower Normandy | 1.000.000 |
+------------+----------------+-------------+
| 2000-02-11 | Upper Normandy | 1.100.000 |
+------------+----------------+-------------+
| 2020-04-25 | Lower Normandy | 1.800.000 |
+------------+----------------+-------------+
| 2020-04-25 | Upper Normandy | 1.900.000 |
+------------+----------------+-------------+
我想将Lower Normandy
和Upper Normandy
的行汇总为Normandy
,并根据date
列将population
相加。
预期结果将是:
+------------+----------------+-------------+
| date | region_name | population |
+------------+----------------+-------------+
| 2000-02-11 | Normandy | 2.100.000 |
+------------+----------------+-------------+
| 2020-04-25 | Normandy | 3.700.000 |
+------------+----------------+-------------+
此聚合的结果将用于创建新视图。
如何使用标准SQL在BigQuery中完成?
您可以使用case
表达式来更改名称:
select date,
(case when region_name like '%Normandy' then 'Normandy' else region_name end) as region_name,
sum(population) as population
from t
group by 1, 2;
此匹配以“ Normandy”结尾的任何内容。当然,您可以使用region_name in ('Upper Normandy', 'Lower Normany')
来提高精度(并增加键入)。
或者,如果您只关心这四行,则只需分配region_name
:
select date, 'Normandy' as region_name, sum(population) as population
from t
where region_name like '%Normandy'
group by date;