首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL分组平均值

SQL分组平均值
EN

Stack Overflow用户
提问于 2016-05-24 17:48:43
回答 2查看 129关注 0票数 0

我正在努力获得我们的学生在责任和合作任务方面的平均分数。问题是,责任和协作任务可以被称为不同的东西,比如“音乐中的协作”和“数学中的协作”,但它们的名字中仍然有‘责任’或‘协作’。因此,当我运行下面的查询时,我得到多个与协作相关的任务的结果和多个责任任务的结果。我需要一个平均责任和一个合作。有什么建议吗?我有SQL Server。

代码语言:javascript
运行
复制
SELECT gradingscores.task AS task, 
       avg(Cast(gradingscores.score AS decimal) as averages 
FROM gradingscores 
WHERE    isnumeric(gradingscores.score) = 1
  AND    task LIKE %responsibility% 
   OR    task LIKE %collaboration%

所以我的结果是:

任务平均在音乐中的责任4.0数学中的责任3.5英语3.0在音乐方面的合作3.5在第2.5条中的合作

我希望我的结果看起来像:

任务平均责任4.0协作3.5

评分也是在varchar,需要转换为数字,贴现任何非数字的数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 13:35:17

我意识到,我只需要从Select语句中删除任务名称,并对责任和协作级别进行单独的查询。通过这种方式,它会自动将所有有责任或协作的任务分组。

代码语言:javascript
运行
复制
SELECT avg(Cast(gradingscores.score AS decimal) as averages 
FROM gradingscores 
WHERE    isnumeric(gradingscores.score) = 1
         AND task LIKE %responsibility% 
票数 0
EN

Stack Overflow用户

发布于 2016-05-25 04:41:40

您应该能够按任务的前14个字母分组,并有一个rtrim来消除协作上的额外空间(13个字母)。

“where”将确保它只获得协作或负责的条目。

代码语言:javascript
运行
复制
SELECT   RTRIM(LEFT(gradingscores.task, 14) AS task, 
         cast(avg(Cast(gradingscores.score AS decimal(10,1)) as decimal(10,1)) as averages 
FROM     gradingscores 
WHERE    isnumeric(gradingscores.score) = 1
  AND    task LIKE 'responsibility%' 
   OR    task LIKE 'collaboration%'
GROUP BY RTRIM(LEFT(gradingscores.task, 14)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37420519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档