【发布时间】:2016-05-24 17:48:43
【问题描述】:
我正在尝试获取我们学生在责任和协作任务方面的平均分数。问题是责任和协作任务可以称为不同的东西,例如“音乐协作”和“数学协作”,但它们的名称中仍然有“责任”或“协作”。因此,当我运行下面的查询时,我会得到与协作相关的任务的多个结果和责任任务的多个结果。我需要一个负责责任的平均值和一个协作的平均值。有什么建议么?我有 SQL Server。
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 格式,需要转换成数字,打折任何非数字数据。
【问题讨论】:
-
向我们展示数据库架构、示例数据和预期结果,看看您需要什么。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
-
请勿使用浮点数,除非您正在执行统计抽样并了解随之而来的精度损失。 在您理解这个问题之前,始终在计算中使用小数。浮点数是一种不精确的数据类型,它使用以 2 为底的指数来表示数字,因此不能准确地表示十进制数,并且可能会产生预期为(例如)5 的值会显示为 4.99999999 的问题。
标签: sql sql-server average