Как насчет добавления другой группы?
SELECT SUM(views) views, title_group
FROM `fh-bigquery.wikipedia_v3.pageviews_2019` CROSS JOIN
UNNEST([CASE WHEN title LIKE '%game%' THEN 'games_group' END,
CASE WHEN title LIKE '%sport%' THEN 'sports_group' END,
CASE WHEN title NOT LIKE '%game%' AND title NOT LIKE '%sport%' THEN 'Neither' END
]) AS title_group
WHERE DATE(datehour) BETWEEN '2019-01-01' AND '2019-01-10' AND
wiki = 'en' AND
title_group IS NOT NULL
GROUP BY title_group;
Примечание. Это не учитывает NULL
заголовки. Я не знаю, важно ли это.
Однако я бы сформулировал это, используя два столбца:
SELECT (title LIKE '%game%') as is_game,
(title LIKE '%sport%') as is_sport,
SUM(views)
FROM `fh-bigquery.wikipedia_v3.pageviews_2019`
WHERE DATE(datehour) BETWEEN '2019-01-01' AND '2019-01-10' AND
wiki = 'en' AND
title_group IS NOT NULL
GROUP BY is_game, is_sport;
Это не возвращает те же строки, что и у вас - игры и спорт разделены на два ряда. Но вы можете видеть комбинации.
РЕДАКТИРОВАТЬ:
Теперь, когда я думаю об этом, вы просто хотите LEFT JOIN
:
SELECT g.title_group, SUM(pv.views) as views,
FROM `fh-bigquery.wikipedia_v3.pageviews_2019` pv LEFT JOIN
(SELECT '%game%' as pattern, 'games_group' as title_group UNION ALL
SELECT '%sport%', 'sports_group' as title_group UNION ALL
) g
ON pv.title LIKE g.pattern
WHERE DATE(datehour) BETWEEN '2019-01-01' AND '2019-01-10' AND
wiki = 'en' AND
GROUP BY g.title_group;