Google bigquery 在Bigquery和云数据实验室中查询重复记录

Google bigquery 在Bigquery和云数据实验室中查询重复记录,google-bigquery,Google Bigquery,我有一个EMP表,它将Empno、Name、Age作为常规字段 EMP.工资作为记录,重复输入,有两个字段“月”和“金额” 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.Mo

我有一个EMP表,它将Empno、Name、Age作为常规字段

EMP.工资作为记录,重复输入,有两个字段“月”和“金额”

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来获取这些重复项

你好,湿婆


我需要以下输出的biqQuery。EmpNo姓名月薪1 Alex 2000年1月1 Alex 3000年2月1 Alex 3500年3月2 Teresa 1000年1月2 Teresa 2000年2月2 Teresa 3000年2月

下面是BigQuery标准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
我需要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`

这很有效。

你说的“在这里取”到底是什么意思?你能在下面展示预期的结果吗?你的意思和问题中的完全一样?如果是这样,你应该重新审视你想要的,因为这通常没有多大意义!你应该问自己的问题是——为什么我认为我需要这样做?那么我将如何使用它?等等。您可能要计算所有金额的总和?还是别的什么?这将使更多的感官需要以下输出的biqQuery。EmpNo Name月薪1亚历克斯2000年1月1亚历克斯3000年2月1亚历克斯3500年3月2特蕾莎1000年1月2特蕾莎2000年2月2特蕾莎3000年2月OK@mikhail。我需要empno的详细信息,姓名和工资总额。谢谢@Mikhail。就工资总额而言,这很有效。假设,如果我在工资记录中有一个额外的列“税”,我可以得到税和工资的总和吗?当然可以!看来你原来的问题得到了回答!请考虑表决并接受。如果您有任何新问题-请发布新问题,我们会回答。
#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     
SELECT EmpNo, Age, Name, 
  (SELECT SUM(Amt) FROM UNNEST(Salary)) Total
FROM `project.dataset.your_table`