【问题标题】:How to check if any value in group is equal to a specific value in BigQuery SQL?如何检查组中的任何值是否等于 BigQuery SQL 中的特定值?
【发布时间】:2023-01-31 22:44:10
【问题描述】:

我有如下数据集:

ID|Date_Val|Data
1|2022-01-01|A
1|2022-01-01|I
1|2022-01-01|H
2|2022-01-01|G
2|2022-01-01|G
2|2022-01-01|I

我想运行如下查询:

SELECT ID, Date_Val, IF(/logic here/, 'A', 'B')
GROUP BY 1,2

输出数据集

ID|Date_Val|Data
1|2022-01-01|A
2|2022-01-01|B

我将如何编写/logic here/,以便如果分组(ID,Date_Val)中的任何Data值为= 'A' then 'A' else 'B'

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    我们能试试:

    SELECT ID, Date_Val,
           CASE WHEN MAX(CASE WHEN Data = 'A' THEN 1 END) > 0 THEN 'A' ELSE 'B' END AS Data
    FROM yourTable
    GROUP BY 1, 2;
    

    【讨论】:

      【解决方案2】:
      SELECT ID, Date_Val, 
        CASE WHEN SUM(CASE WHEN Data = 'A' THEN 1 ELSE 0 END) >= 1 THEN 'A' ELSE 'B' END as Data
      FROM your_table
      GROUP BY ID, Date_Val
      

      【讨论】:

        【解决方案3】:

        在 BigQuery 中,另一种选择是:

        SELECT ID, Date_Val, IF('A' IN UNNEST(ARRAY_AGG(Data)), 'A', 'B') Data
          FROM sample_table 
         GROUP BY 1, 2;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-13
          • 2018-08-19
          • 1970-01-01
          • 2022-01-04
          • 1970-01-01
          • 2020-02-10
          • 1970-01-01
          相关资源
          最近更新 更多