如何使用sum()将count()相加?

wecizke3  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(627)

基本上,我有这个-

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()时,它就会崩溃,并出现一个错误,即group函数的使用无效。
我试过了 SUM(COUNT(student_dormpm.DormCode) * dorm_datapm.DormCharge)

f45qwnt8

f45qwnt81#

看起来像 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);
ny6fqffe

ny6fqffe2#

使用 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

相关问题