You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中Chinook数据库查询各专辑总价格的SQL问题排查

问题根因

你的表关联逻辑是正确的,仅返回单条汇总结果的核心问题是:使用SUM()聚合函数统计总价时,缺少GROUP BY分组子句。没有分组的前提下,SQL会将两表关联后的所有行合并为一个分组做聚合计算,自然只能得到全量数据的总价总和,无法按单张专辑拆分统计。
你选择LEFT JOIN的写法完全适配SQLite环境,也符合需求:可以保留albums表中所有专辑记录,即使某张专辑没有关联音轨也不会被过滤,不需要使用FULL OUTER JOIN。

修正后代码

建议按专辑主键AlbumId分组(避免同名专辑导致统计错误),如果需要将无音轨专辑的总价显示为0而非NULL,可以搭配COALESCE()函数处理空值:

SELECT
  a.Title,
  COALESCE(SUM(t.UnitPrice), 0) AS TotalPrice
FROM albums a
LEFT JOIN tracks t
  ON t.AlbumId = a.AlbumId
GROUP BY a.AlbumId, a.Title
ORDER BY a.Title;
注意事项
  • 若不需要处理无音轨专辑的空值,可直接去掉COALESCE()函数,写为SUM(t.UnitPrice) AS TotalPrice即可
  • 不建议仅按a.Title字段分组:极端场景下如果存在同名不同ID的专辑,仅按标题分组会将多张专辑的价格合并统计,用主键AlbumId作为分组依据才能保证统计粒度准确。

内容的提问来源于stack exchange,提问作者je1227

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:36:38