Как преобразовать строки в столбцы с частотой его значений в SQL - PullRequest
0 голосов
/ 11 апреля 2019

Как я могу преобразовать строки в столбцы с частотой их значений в SQL?

Например: у меня есть данные, показанные ниже:

Input Data

и ожидаемый результат:

expected output

Ответы [ 3 ]

3 голосов
/ 11 апреля 2019

Я бы поместил значения в столбцы:

select sum(apple) as num_apples,
       sum(banana) as num_bananas,
       sum(orange) as num_oranges,
       sum(strawberry) as num_strawberries
from t;

Это кажется достаточно хорошим для большинства целей.Но, если вы хотите отменить это:

select f.fruit,
       (case fruit
            when 'apple' then sum(apple),
            when 'banana' then sum(banana)
            when 'orange' then sum(orange) 
            when 'strawberry' then sum(strawberry)
        end) as num
from t cross join
     (select 'apple' as fruit union all
      select 'banana' as fruit union all
      select 'orange' as fruit union all
      select 'strawberry' as fruit
     ) f
group by f.fruit
0 голосов
/ 11 апреля 2019

С UNION ALL для каждого фрукта:

select sum(apple) countofcustomer, 'Apple' Fruits from tablename
union all
select sum(banana), 'Banana' from tablename
union all
select sum(orange), 'Orange' from tablename
union all
select sum(strawberry), 'Strawberry' from tablename
0 голосов
/ 11 апреля 2019

Группируйте по клиенту, а затем используйте SUM для подсчета единиц для каждого столбца>

SELECT 
    customer,
    SUM(apple) AS Apple,
    SUM(banana) AS Banana,
    SUM(orange) AS Orange,
    SUM(strawberry) AS Strawberry
GROUP BY customer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...