Операция разворота в SQL для Clickhouse

Я работаю с SQL для базы данных Clickhouse.

У меня есть таблица со следующими данными:

┌─report_date──┬─platform─┬─viewers─┬─effectivePlaytime─┬─revenue─┐
│ Date         │ String   │ UInt32  | Float32           │ Float32 |
└──────────────┴──────────┴─────────┴───────────────────┴─────────┘

Я хотел бы выполнить операцию над этой таблицей, которую можно было бы назвать операцией разворота. При этом извлекается одна строка для каждой метрики, даты и платформы вместо обычной одной строки для каждой платформы и данных, которую возвращает обычный select * from data_table.

Это то, что мне нужно иметь в ответе.

┌─report_date──┬─platform─┬─metric ─┬─Value───┐
│ Date         │ String   │ String  | Float32 │
└──────────────┴──────────┴─────────┴─────────┘

Моя текущая попытка сделать несколько UNION ALL и дает желаемый результат, однако мне хотелось бы иметь лучшее (более компактное и, предположительно, более быстрое) решение.

SELECT report_date, platform, 'viewers' AS metric, viewers AS value
FROM platform_table
UNION ALL
SELECT report_date, platform, 'effectivePlaytime' AS metric, effectivePlaytime AS value
FROM platform_table
UNION ALL
SELECT report_date, platform, 'revenue' AS metric, revenue AS value
FROM platform_table
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы хотите ARRAY JOIN. Попробуй это:

SELECT
    report_date,
    platform,
    metric,
    value
FROM platform_table
ARRAY JOIN
    ['viewers', 'effectivePlaytime', 'revenue'] AS metric,
    [viewers, effectivePlaytime, revenue] AS value

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