sql - SQL 查询中的规范化值

标签 sql sql-server sql-server-2008 tsql

我有一个数据表,我希望对其执行一些数值分析,因为我需要所有值都在同一范围内。 0..1.

我有一个有点慢和长手的方式来完成这个,但我想要一个更直接的前瞻性解决方案来解决我的问题

我需要做的是:

按项目编号分组 在每个项目中取每个值的平均值并除以整个集合的最大平均值。

目前我有

select avg(foo * 1.0)/ (Select MAX(IL) FROM (select avg(foo * 1.0) as IL from table group by     
                                             ProjectID) tbl)
from table

所以如果列表是

projectid  | foo
-----------------
1          | 1
1          | 2
2          | 4
2          | 2

最大的平均值是3,因此结果应该是

0.5,1

第一个是 projectId 1 的平均值除以 3,第二个是 projectId 2 的平均值除以 3

最佳答案

SQL FIDDLE EXAMPLE

select
    Projectid,
    avg(cast(foo as decimal(29, 2))) / max(avg(cast(foo as decimal(29, 2)))) over ()
from tbl1
group by Projectid

关于sql - SQL 查询中的规范化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13173615/

相关文章:

sql - 数据仓库模型方法

sql - Spark : scala. MatchError(类 org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema

c# - SqlDependency 查询通知错误

sql-server-2008 - 更新阿拉伯语数据

sql - 列名不匹配的唯一约束

java - 我必须在 Web 应用程序中将文件存储在 MS SQL 2008 DB 中。您建议将其存储为 xml 字符串还是 blob?

sql - EF 5 + Azure + MigrationFirst 覆盖数据库名称。为什么?

php - php数据库如何查找年龄20岁以上25岁以下的用户

sql-server - View 中具有静态值的另一个表中的 SQL Server 列

c# - Azure 函数有时不会将行插入 SQL Server