使用临时表时返回NULL的SQL计数查询
我使用下面的代码尝试根据专辑中的歌曲数量返回平均收入使用临时表时返回NULL的SQL计数查询,sql,sqlite,Sql,Sqlite,我使用下面的代码尝试根据专辑中的歌曲数量返回平均收入 WITH Album_Tracks AS ( SELECT COUNT(*) AS "#ofTracks", SUM(invoice_items.UnitPrice) AS "Album_Revenue" from tracks LEFT JOIN invoice_items ON invoice_items.trackID = tracks.trackID GROUP BY A
WITH Album_Tracks AS (
SELECT COUNT(*) AS "#ofTracks", SUM(invoice_items.UnitPrice) AS "Album_Revenue"
from tracks
LEFT JOIN invoice_items ON invoice_items.trackID = tracks.trackID
GROUP BY Albumid
)
SELECT #ofTracks, AVG(Album_Revenue)
FROM Album_Tracks
GROUP BY #ofTracks
ORDER BY #ofTracks DESC
我遇到的问题是,当我没有从表中选择所有数据时,临时表“Album_tracks”中的of tracks列返回一列空值
和中一样,这样做:SELECT*FROM ALBOM_Tracks返回值,但SELECT ofTracks FROM ALBOM_Tracks只返回空值
我不确定代码中的问题是什么
期待看到:
但我得到:
第一个示例中没有包括order by。只是一个建议
尽量避免表和列名中不允许的字符为+-?!*@%^&=/\:'
尝试一个简单的方法:
SELECT #ofTracks
它将返回NULL。
用双引号、反勾号或方括号括起来:
SELECT "#ofTracks", AVG(Album_Revenue) FROM Album_Tracks
GROUP BY "#ofTracks"
ORDER BY "#ofTracks" DESC
更新您的问题添加一个适当的数据样本作为表格文本,以及您实际使用的样本数据的预期结果截图。。mysql???或sqlite??使用sqlite。很抱歉,我刚刚开始使用sqlTry,请不要使用特殊字符作为列名的开头字符。选择计数*作为numtrack。。。从专辑中选择numtracks_曲目…这很有效,谢谢!今后我将避免在表/列标题中使用符号
SELECT "#ofTracks", AVG(Album_Revenue) FROM Album_Tracks
GROUP BY "#ofTracks"
ORDER BY "#ofTracks" DESC