首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server AVG为每一行返回0

SQL Server AVG为每一行返回0
EN

Stack Overflow用户
提问于 2021-03-04 13:30:20
回答 1查看 308关注 0票数 1

我试图在Server上进行一个有点复杂的查询。必须从select中进行选择,以便按别名分组。问题是和计数返回正确的值,但是平均值总是零。如果我把它计算为和(quer.score)/count(quer.score),它也会返回所有的零。

我做错了什么?

提前感谢!

代码语言:javascript
复制
SELECT quer.month, quer.item_type, SUM(quer.score) AS sum_values,COUNT(quer.score) as count_values, avg(quer.score) as final_value FROM (
SELECT
CASE
WHEN MONTH(inte.date) = 1 THEN 'January'
WHEN MONTH(inte.date) = 2 THEN 'February'
WHEN MONTH(inte.date) = 3 THEN 'March'
WHEN MONTH(inte.date) = 4 THEN 'April'
WHEN MONTH(inte.date) = 5 THEN 'May'
WHEN MONTH(inte.date) = 6 THEN 'June'
WHEN MONTH(inte.date) = 7 THEN 'July'
WHEN MONTH(inte.date) = 8 THEN 'Agosto'
WHEN MONTH(inte.date) = 9 THEN 'September'
WHEN MONTH(inte.date) = 10 THEN 'October'
WHEN MONTH(inte.date) = 11 THEN 'November'
WHEN MONTH(inte.date) = 12 THEN 'December'
END AS month,

CASE
    WHEN  inte.item_id in (SELECT distinct item_id from Items where item_type = 'electronic') THEN 'electronic'
    ELSE 'not electronic'
END AS item_type,

CASE WHEN scores.score <7 THEN -1
WHEN scores.score >8 THEN 1
ELSE 0
END AS score
FROM internal_items inte inner join scores_data scores on inte.item_id = scores.item_id
WHERE inte.internal_type = 'dba'
) quer

GROUP BY quer.month, quer.item_type

结果:

代码语言:javascript
复制
month     item_type           sum  count  avg
January   electronic           0     3     0
January   not electronic      -2     7     0
February  electronic          -4     6     0
February  not electronic      -6     8     0
March     electronic          -4     5     0
March     not electronic      -3     6     0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 13:46:59

您应该使用小数或浮点数,而不是整数作为数据类型,例如使用。

代码语言:javascript
复制
CASE WHEN scores.score <7 THEN -1.0
WHEN scores.score >8 THEN 1.0
ELSE 0.0
END AS score

(请注意添加的.0 )。

Server使用相同的数据类型作为聚合结果的基列,因此,当输入值为ints时,平均值将被计算为int。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66476055

复制
相关文章

相似问题

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