我有一张表EMP,其中包含Empno,Name,Age作为一般字段。
EMP.Salary as RECORD with Repeated type with two fields Month& AMT
EmpNo: 1
Age : 25
Name : Alex
Salary.Month : Jan
Salary.Amt : 2000
Salary.Month : Feb
Salary.Amt : 3000
Salary.Month : Mar
Salary.Amt : 3500
Emp No: 2
Age : 26
Name : Teresa
Salary.Month : Jan
Salary.Amt : 1000
Salary.Month : Feb
Salary.Amt : 2000
Salary.Month : Mar
Salary.Amt : 3000
如何在Bigquery中使用标准sql来获取这些重复项?
问候,西瓦
答案 0 :(得分:1)
我需要biqQuery来跟随输出。 EmpNo名称月工资1 Alex Jan 2000 1 Alex Feb 3000 1 Alex Mar 3500 2 Teresa Jan 1000 2 Teresa Feb 2000 2 Teresa Feb 3000
以下是BigQuery Standard SQL
#standardSQL
SELECT EmpNo, Age, Name, s.*
FROM `project.dataset.your_table` t, UNNEST(Salary) s
您可以使用问题中的虚拟数据进行测试/播放,如下所示
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT 1 EmpNo, 25 Age, 'Alex' Name,
[STRUCT<Month STRING, Amt INT64>('Jan', 2000), ('Feb', 3000), ('Mar', 3500)] Salary UNION ALL
SELECT 2, 26, 'Teresa',
[STRUCT<Month STRING, Amt INT64>('Jan', 1000), ('Feb', 2000), ('Mar', 3000)]
)
SELECT EmpNo, Age, Name, s.*
FROM `project.dataset.your_table` t, UNNEST(Salary) s
,结果是
Row EmpNo Age Name Month Amt
1 1 25 Alex Jan 2000
2 1 25 Alex Feb 3000
3 1 25 Alex Mar 3500
4 2 26 Teresa Jan 1000
5 2 26 Teresa Feb 2000
6 2 26 Teresa Mar 3000
我需要empno,姓名和工资总额的详细信息
如果您需要工资的总和,您可以使用以下示例
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT 1 EmpNo, 25 Age, 'Alex' Name,
[STRUCT<Month STRING, Amt INT64>('Jan', 2000), ('Feb', 3000), ('Mar', 3500)] Salary UNION ALL
SELECT 2, 26, 'Teresa',
[STRUCT<Month STRING, Amt INT64>('Jan', 1000), ('Feb', 2000), ('Mar', 3000)]
)
SELECT EmpNo, Age, Name,
(SELECT SUM(Amt) FROM UNNEST(Salary)) Total
FROM `project.dataset.your_table`
,结果是
Row EmpNo Age Name Total
1 1 25 Alex 8500
2 2 26 Teresa 6000
答案 1 :(得分:1)
SELECT EmpNo, Age, Name,
(SELECT SUM(Amt) FROM UNNEST(Salary)) Total
FROM `project.dataset.your_table`
效果很好。