Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посчитать проценты по группе используя "over"? / 3 сообщений из 3, страница 1 из 1
27.04.2016, 15:45
    #39225809
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать проценты по группе используя "over"?
Предположим мы продаем машины, и хотим понять сколько процентов машин продано по каждому бренду. Как это сделать в PostgreSQL используя `over`?

Таблица:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    car_id | brand | sold
    ----------------------
    1      | BMW   | true
    2      | BMW   | false
    3      | Mazda | true
    4      | Mazda | false
    5      | Mazda | true

Результат который нужно получить:

Код: plaintext
1.
2.
3.
4.
    brand | sold
    ------------
    BMW   | 50%
    Mazda | 66%

П.С.

Эту задачу можно решить как показано ниже, но мне хотелось бы знать как решить ее используя `over`.

Код: plaintext
1.
2.
    SELECT brand, SUM(CASE WHEN sold = 'true' THEN 1 ELSE 0 END)/COUNT(*) AS Sold
    FROM thedata
    GROUP BY brand
...
Рейтинг: 0 / 0
27.04.2016, 16:07
    #39225851
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать проценты по группе используя "over"?
private,

а зачем тут OVER? думаю вам надо подсчитать сколко продано, сколко всего и от этих цифер высчитывать процент.
...
Рейтинг: 0 / 0
30.04.2016, 07:32
    #39227917
grgdvo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать проценты по группе используя "over"?
private,

может так
SELECT brand, AVG(CASE WHEN sold = 'true' THEN 1 ELSE 0 END) OVER (PARTITION BY brand) AS Sold
FROM thedata
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посчитать проценты по группе используя "over"? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]