如何在SQL中实现多表关联查询并按类别汇总服务金额
多类别服务金额汇总解决方案
原查询仅返回单个类别是因为两个问题:一是WHERE条件限定了仅查询类别ID为1的数据,二是缺少分组语句来按类别聚合金额。
正确查询语句
SELECT Kategorii.Nazwa_kategorii, COALESCE(SUM(Uslugi.Cena_uslugi), 0) AS kwota FROM Kategorii LEFT JOIN Uslugi ON Kategorii.id_kategorii = Uslugi.id_kategorii GROUP BY Kategorii.id_kategorii, Kategorii.Nazwa_kategorii;
修改说明
- 移除单个类别限制:删掉
WHERE Uslugi.id_kategorii =1条件,这样会返回所有类别的数据,包括没有对应服务的类别(LEFT JOIN会保留所有Kategorii表的记录)。 - 添加分组语句:使用
GROUP BY按类别ID和类别名称分组,确保每个类别单独汇总金额。如果类别名称是唯一的,也可以只写GROUP BY Kategorii.Nazwa_kategorii,但用ID分组更严谨(避免不同ID但名称相同的类别被合并)。 - 优化空值显示:用
COALESCE函数将无服务类别的SUM结果(NULL)转为0,让输出更直观。
补充说明
如果不需要显示没有服务的类别,可以把LEFT JOIN改成INNER JOIN,这样只会返回有对应服务的类别汇总数据。
内容的提问来源于stack exchange,提问作者ТудыСюды
相关产品推荐
相关产品推荐

