Поворот результатов с SQL - PullRequest
1 голос
/ 24 марта 2020

Я использую Blazer есть следующий запрос:

SELECT 
sum(active_paid_users_count) as Active,
sum(inactive_paid_users_count) as Inactive,
sum(free_users_count) as Free
FROM accounts
WHERE
  trialing = false
  AND
  cancelled = false

Это приводит к следующей таблице:

sql results

Я бы хотел повернуть эту таблицу, чтобы я мог получить результат ie диаграммы из Blazer . В конечном итоге это будет выглядеть так:

Type     Count
active      31
inactive    76
free       190

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы можете отменить поворот боковым соединением. Плюс в том, что для этого требуется сканирование одной таблицы:

select v.type, v.cnt
from (
    select 
        sum(active_paid_users_count) as active,
        sum(inactive_paid_users_count) as inactive,
        sum(free_users_count) as free
    from accounts
    where trialing = false and cancelled = false
) t
cross join lateral (
    values ('active', t.active), ('inactive', t.inactive), ('free', t.free)
) as v(type, cnt)
0 голосов
/ 24 марта 2020

Пара союзов должна взять это для вас.

SELECT 'Active'                     AS Type, 
     , sum(active_paid_users_count) AS Count
FROM accounts
WHERE
  trialing = false
  AND
  cancelled = false

UNION

SELECT 'Inactive'                     AS Type, 
     , sum(inactive_paid_users_count) AS Count
FROM accounts
WHERE
  trialing = false
  AND
  cancelled = false

UNION

SELECT 'Free'                AS Type, 
     , sum(free_users_count) AS Count
FROM accounts
WHERE
  trialing = false
  AND
  cancelled = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...