Вычислить процент от суммированных столбцов? - PullRequest
0 голосов
/ 04 октября 2019

Я не уверен, как написать SQL-запрос для этого.

Вот таблица:

ZIP;NUMBER
01800;456
02850;445
75001;123
75002;456
75003;789

Мне нужно 1. суммировать столбец NUMBER для всех строк, где ZIPначинается с "75" и 2. вычисляет процент, который эти строки представляют по сумме (NUMBER).

Примерно так:

select SUM(NUMBER) from MYTABLE WHERE ZIP LIKE "75%" AS 75ZIP;
select (75ZIP/SUM(NUMBER)*100) from MYTABLE;

Должен ли я использовать GROUP BY HAVING, подзапросили что-то совсем другое?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

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

select 
  100.0 * sum(case when zip like '75%' then number else 0 end) / sum(number)
from tablename
0 голосов
/ 04 октября 2019

Для дальнейшего использования, в качестве альтернативы, в следующем выпуске 3.30 поддерживается фильтрация агрегатных функций, которые уже можно выполнить с помощью оконных функций:

SELECT 100.0 * sum(number) FILTER (WHERE zip LIKE '75%') / sum(number)
FROM mytable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...