Как сложить COUNT () с помощью SUM ()? - PullRequest
0 голосов
/ 12 декабря 2018

В основном у меня это -

SELECT COUNT(student_dormpm.DormCode) * dorm_datapm.DormCharge
FROM student_dormpm
JOIN dorm_datapm
USING (DormCode)
GROUP BY DormCode;

с результатом

+---------------------------------------------------------+
| COUNT(student_dormpm.DormCode) * dorm_datapm.DormCharge |
+---------------------------------------------------------+
|                                                 5250.00 |
|                                                11250.00 |
|                                                 9600.00 |
|                                                 6500.00 |
|                                                 5510.00 |
+---------------------------------------------------------+

Но всякий раз, когда я пытаюсь добавить SUM (), он падает, и я получаю ошибкуНеправильное использование групповой функции.

Я пробовал это SUM(COUNT(student_dormpm.DormCode) * dorm_datapm.DormCharge)

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Похоже, dorm_datapm ваша таблица общежития, которая имеет одну запись на DormCode со связанной DormCharge.(В этом случае, хотя имя таблицы dorm может быть более подходящим.)

Если это так, то вы просто хотите суммировать плату за общежитие:

SELECT DormCode, SUM(dd.DormCharge)
FROM student_dormpm sd
JOIN dorm_datapm dd USING (DormCode)
GROUP BY DormCode
ORDER BY DormCode;

Еслиоднако, dorm_datapm может иметь несколько записей на DormCode, тогда вам нужно будет увидеть, получает ли приведенный выше запрос нужные вам результаты или вы хотите присоединиться к строке student_dormpm только с одной строкой dorm_datapm (в этом случае вам придется как-то расширить критерии объединения).

Если вы ищете только общее количество, не группируйте по DormCode:

SELECT SUM(dd.DormCharge)
FROM student_dormpm sd
JOIN dorm_datapm dd USING (DormCode);
0 голосов
/ 12 декабря 2018

Используйте sum на всех выходных данных первого запроса, где псевдоним с именем t указан для первого выходного запроса (для имитации новой таблицы), а также псевдоним total, указанный на счетчике, так что вы можетерассчитать sum(total):

select sum(total) as mysum from 
(
SELECT COUNT(student_dormpm.DormCode) * dorm_datapm.DormCharge as total
FROM student_dormpm
JOIN dorm_datapm
USING (DormCode)
GROUP BY DormCode
) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...