3

我有一列计数,并想将该列除以该列的最大值以获得速率。我试过了

select t.count/max(t.count)
from table t
group by t.count

但失败了。我也试过没有GROUP BY的,还是失败了。

订购 count desc 并选择第一个,因为在我的情况下股息不起作用。考虑我对产品子类别有不同的计数。对于每个产品类别,我想将子类别的数量除以该类别中的最大数量。我想不出避免聚合函数的方法。

4

3 回答 3

2

以下适用于所有 SQL 方言:

select t.count/(select max(t.count) from t)
from table t
group by t.count;

请注意,某些版本的 SQL 会进行整数除法,因此结果将是 0 或 1。您可以通过乘以 1.0 或转换为浮点数来解决此问题。

大多数版本的 SQL 还支持:

select t.count/(max(t.count) over ())
from table t
group by t.count;

同样的警告也适用于整数除法。

于 2013-08-22T18:39:51.803 回答
2

如果你想要每个类别的 MAX() ,你需要一个相关的子查询:

select t.count*1.0/(SELECT max(t.count) 
                    FROM table a
                    WHERE t.category = a.category)
from table t

或者你需要PARTITION BY你的MAX()

select t.count/(max(t.count) over (PARTITION BY category))
from table t
group by t.count
于 2013-08-22T18:46:55.657 回答
1

您可能想尝试使用子查询来派生max值(包括在同一个查询中可能无法按您期望的方式工作,因为您在聚合的同一列上进行分组)

Select t.count / (select max(sub.count) from table sub)
from table t
group by t.count
于 2013-08-22T18:42:17.800 回答