SQL行总和

6

我在我的数据库中有300条记录,我的结构大致如下

State                      values
Queensland                 4554
Queensland                 2343
Queensland                 9890
NSW                        1333

我想检索所有州名称为Queensland的记录,并将字段名称值相加并与该州名称的记录数量(计数)相除以获得总和。
有人能帮我找到实现此操作的语法吗?
我需要输出结果为5595.66(即(4454 + 2343 + 9890)/ 3)。

简而言之,您希望获得州名为“昆士兰”的记录中值列的平均值,对吗? - Jean Hominal
2个回答

12
SELECT State, SUM(values) / (COUNT(*) * 1.0)
FROM   tableName
WHERE  State = 'Queensland'
GROUP  BY State

SELECT State, AVG(values * 1.0)
FROM   tableName
WHERE  State = 'Queensland'
GROUP  BY State

另外,values列名是一个保留关键字。根据你使用的关系型数据库管理系统使用定界符进行转义,例如MySQL中使用反引号(backtick),SQL Server中使用括号(brackets)等。


1

基于

“我想检索所有州名为“昆士兰”的记录…”

您是否正在寻找这个(适用于SQL-Server)? Fiddle-Demo

select [state], round(avg(value *1.0) over() ,2) avgValue
from T
where [state] ='Queensland'

--Results
state       avgValue
Queensland  5595.67
Queensland  5595.67
Queensland  5595.67

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接