Pri*_*lon 3 sql t-sql sql-server aggregate-functions sql-server-2008
我有两个名为Reviews和Levels的表.
CREATE TABLE [dbo].[Reviews](
[ReviewID] [int] IDENTITY(1,1) NOT NULL,
[Rating] [float] NOT NULL,
[LevelID] [int] NOT NULL,
CREATE TABLE [dbo].[Levels](
[Name] [varchar](50) NOT NULL,
[Blocks] [char](960) NOT NULL,
[LevelID] [int] IDENTITY(1,1) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
我希望能够基本上选择Levels表,其中包含一个额外的列,该列是与该LevelID相关的所有评论的平均值.我目前有这个代码
SELECT AVG(Rating) AS Average, Name,Levels.LevelID,Blocks
FROM Reviews, Levels
WHERE Levels.LevelID = Reviews.LevelID
GROUP BY Levels.LevelID, Name, Blocks
Run Code Online (Sandbox Code Playgroud)
这将返回至少包含一次审阅的级别的正确结果.我希望能够返回没有评论的级别,只需给出平均评分0.
小智 5
试试这个查询......它肯定会解决你的问题....
SELECT ISNULL(AVG(Rating),0) AS Average, Name,Levels.LevelID,Blocks
FROM Levels LEFT JOIN Reviews
ON Levels.LevelID = Reviews.LevelID
GROUP BY Levels.LevelID, Name, Blocks
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1656 次 |
最近记录: |