Re: Need query

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: Need query
Дата
Msg-id d3309e65-ddff-439e-49a1-7a42a0479001@gmx.net
обсуждение исходный текст
Ответ на Need query  (Firthouse banu <penguinsfairy@gmail.com>)
Ответы Re: Need query  (Caetano Traina Junior <caetano@icmc.usp.br>)
Список pgsql-admin
Firthouse banu schrieb am 17.07.2021 um 09:24:
> Table1
> Name      Fruit
> A              Mango
> A              Apple
> A               Grape
> B.              Mango
> B.              Mango
> A.              Mango
> A.              Apple
>
> Output
> Name.   Mango   Apple   Grape
> A.           2.            2.          1
> B.           2.             0.         0
>
> Can anyone write query to get this desired output from table one in Postgres please.

In my opinion, filtered aggregation is the most flexible way to do this kind of thing

select name,
        count(*) filter (where fruit = 'Mango') as mango,
        count(*) filter (where fruit = 'Apple') as apple,
        count(*) filter (where fruit = 'Grape') as grape
from the_table
group by name
order by name;


And before you ask: it's not really possible to make this dynamic, so that the number
of columns "automagically" increases when you have more fruits. One fundamental
restriction of the SQL language is that the number and types of all columns
must be known to the database when the query is parsed. It can't change
the columns as a result of the query itself.



В списке pgsql-admin по дате отправления:

Предыдущее
От: Imre Samu
Дата:
Сообщение: Re: Need query
Следующее
От: Caetano Traina Junior
Дата:
Сообщение: Re: Need query