Sql 分而治之
我正在尝试创建百分位数分数。我的查询正确生成排名,但除法不起任何作用(排名显示在列中,而不是分数中) 我也尝试过生成排名,然后选择它并进行除法,但结果是一样的Sql 分而治之,sql,db2,Sql,Db2,我正在尝试创建百分位数分数。我的查询正确生成排名,但除法不起任何作用(排名显示在列中,而不是分数中) 我也尝试过生成排名,然后选择它并进行除法,但结果是一样的 SELECT ..."/"("Disk IO Score",Count(*)) "Score"... FROM(....RANK() OVER(ORDER BY "Disk IO") "Disk IO Score"...) 谢谢, 布兹基 似乎您使用的是聚合COUNT(*)而不是分析型 试试这个: SELECT RANK() OVER
SELECT ..."/"("Disk IO Score",Count(*)) "Score"...
FROM(....RANK() OVER(ORDER BY "Disk IO") "Disk IO Score"...)
谢谢,
布兹基
似乎您使用的是聚合
COUNT(*)
而不是分析型
试试这个:
SELECT RANK() OVER (...) / COUNT(*) OVER (...)
你能把整个问题(包括
groupby
子句)都发出来吗?我想答案是肯定的。计数(*)返回1,所以我只是除以1。你的count(*)返回多少?好问题。返回1,这从结果来看是有意义的,但不可取。我想我已经解决了这个问题。计数返回由于分组而为1的每个服务器的实例数。你能想出一个办法让我知道所有服务器的数量吗?你的困惑让我很难说。服务器是什么?
SELECT "System_Name", "/"(RANK() OVER(ORDER BY "Disk IO"),Count(*)) "Disk IO Score"
FROM (Select...)
GROUP BY "System_Name", "Disk IO"
SELECT RANK() OVER (...) / COUNT(*) OVER (...)