SQL总和行数

时间:2013-02-04 09:03:12

标签: sql select

我的数据库中有300条记录,我的结构是这样的

State                      values
Queensland                 4554
Queensland                 2343
Queensland                 9890
NSW                        1333

我想要检索状态名为Queensland的所有记录,并且我希望将所有记录与字段名称值相加,并将总和除以具有州名称的记录数(计数)。

任何人都可以帮我解决这个问题吗?

我需要的输出为5595.66(即(4454 + 2343 + 9890)/ 3)

2 个答案:

答案 0 :(得分:12)

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

OR

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

作为旁注,columnName values是一个保留关键字。根据您使用的RDBMS,通过分隔符将其转义。喜欢(反引号)MySQL,(括号)SQL Server等......

答案 1 :(得分:1)

基于

  

“我想检索所有记录,状态名称为”Queensland“..”

你在寻找这个(对于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