【发布时间】:2021-03-19 22:32:45
【问题描述】:
我正在学习 SQL Server,我有一个从同事那里得到的示例数据库。
我之前创建了一个运行良好的存储过程。现在我正在尝试显示我目前正在努力的列的平均值。
您的支持意义重大,我会从中学习。
所以这是我的查询:
SELECT
CONCAT(ud.FirstName, ',', ud.LastName) AS 'Name',
tech.TechnoName AS 'Techno',
(rt.Rating) AS 'Rating', rt.FeedBackType,
rt.Description, rt.ProgramId
FROM
Rating rt, Techno tech, Program pd, User ud
WHERE
pd.Id = ud.UserID AND
pd.TechnoId = tech.TechnoID AND
rt.PdId = pd.Id
GROUP BY
pd.Id, ud.FirstName, ud.LastName, tech.TechnoName,
rt.Rating, rt.PdId, rt.Description, rt.FeedBackType
ORDER BY
rt.PdId
我的桌子是这样的
Name Techno Rating FeedbackType Description ProgramId
---------------------------------------------------------------------
A,B C# 4 1 *** 100
A,B C# 5 1 *** 102
B,B JS 4 3 *** 106
B,C C++ 3 1 *** 280
B,C C 5 1 *** 300
现在我想根据名称和技术列显示平均评级,这样我的表格应该像
Name Techno Rating
--------------------------
A,B C# 4.5
B,B JS 4
B,C C++ 3
B,C C 5
提前致谢
【问题讨论】:
-
从
SELECT和GROUP BY中删除其他列(例如FeedBackType),然后将Avg()聚合函数应用于Rating。 -
重新开始 - 你正在学习坏习惯。使用 JOIN——不是 9old 式通过 where 子句连接](sqlblog.org/2009/10/08/bad-habits-to-kick-using-old-style-joins)!
-
别再把你的代码塞在一起了。可读的代码总是更好。
标签: sql sql-server inner-join average aggregate-functions