Как проверить, равно ли какое-либо значение в группе определенному значению в BigQuery SQL?

У меня есть набор данных, подобный следующему:

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/, чтобы любое значение Data в группе (ID, Date_Val) было = 'A' then 'A' else 'B'.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
80
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Мы можем попробовать:

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;
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

В BigQuery другим вариантом будет:

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

Ниже приведена самая компактная версия, которую вы можете рассмотреть.

select id, date_val, 
  if (logical_or(data = 'A'), 'A', 'B') as data
from your_table
group by id, date_val      

если применяется к выборочным данным в вашем вопросе - вывод

Другие вопросы по теме