Сумма в подзапросе с группировкой по - PullRequest
1 голос
/ 01 апреля 2020

Имя таблицы: Пользователь

id| name |daily_salary | expense | days
 1   A     $100            $50        5
 1   B     $50             $30        5
 1   C     $200            $50        5
 1   C     $100            $50        3
 2   D     $200            $50        2
 3   E     $200            $50        1

Я хотел бы иметь расходы / (дневная зарплата * дни).

Из таблицы обычно сгруппированы идентификаторы.

Но если имена совпадают, идентификатор и имя должны быть сгруппированы.

Например, когда идентификатор равен 1, а имя равно C, $ 50 / {($ 200 * 5) + ($ 100 * 3)} .

Так должно быть

id  | name  | value
1      A      $50/$500
1      B      $30/$250
1      C      $50/$1500
2      D      $50/$400
3      E      $50/$200

Вот запрос, который я пробовал.

select id, name, (select expense/sum(daily_salary*days) from user group by name)
from user
group by id

В сообщении об ошибке говорится, что подзапрос должен возвращать более одной строки .

Есть ли способ это исправить или правильно реализовать?

Спасибо

1 Ответ

1 голос
/ 01 апреля 2020
SELECT id, name, MAX(expense)/SUM(daily_salary * days)
FROM user
GROUP BY id, name

Я использую MAX(expense), чтобы получить одно значение expense из группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...