6

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

State                      values
Queensland                 4554
Queensland                 2343
Queensland                 9890
NSW                        1333

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

任何人都可以帮助我实现这一目标的语法吗?

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

4

2 回答 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

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

于 2013-02-04T09:04:38.707 回答
1

基于

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

您在寻找这个(用于 SQL-Server)吗?小提琴演示

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
于 2013-02-04T09:22:57.620 回答