Как объединить функции с groupby в SQL - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть такие таблицы. Я хотел бы groupby и агрегировать это в различных агрегатных функциях.

product sex  age
A        M    10
B        F    20
A        F    30
C        M    40

мой желаемый результат, как показано ниже. Теперь я могу группировать по ключу product, но в этом случае я должен сгруппировать их по product и sex.

. Есть ли способ достичь этого?

   count(M) count(F) avarage(M) average(F)
A   1         1         10       30       
B   0         1         NA       20
C   1         0         40       NA

Спасибо

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

С условной агрегацией:

select product,
  sum(case when sex = 'M' then 1 else 0 end),
  sum(case when sex = 'F' then 1 else 0 end),
  avg(case when sex = 'M' then age end),
  avg(case when sex = 'F' then age end)
from tablename
group by product
0 голосов
/ 23 апреля 2020

Вы можете просто использовать PIVOT следующим образом:

select * from your_Table
pivot
(count(1) as cnt, avg(age) as average for sex in ('M','F'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...