我希望Oracle SQL专家能够帮助解决这个问题。我有一个具有以下列的观点:如何在使用Oracle SQL使用OVER(分区...)时计算总计总计
MONTH (DATE)
JOB_GROUP (VARCHAR2)
PEOPLE (NUMBER)
我认为目前看起来是这样的:
SELECT
DISTINCT JOB_GROUP,
SUM(PEOPLE) OVER (PARTITION BY MONTH || JOB_GROUP) AS CURRENT_PEOPLE
SUM(PEOPLE) OVER (PARTITION BY MONTH || JOB_GROUP)/'100' AS RATIO
FROM MY_VIEW
WHERE MONTH = '01-DEC-2013'
ORDER BY RATIO DESC
的“100”来自于翻出当月的我顶页面上的隐藏项目Worker1,但对于这个例子,我只是使用'100'。 查询的结果出现这样的事情。
JOB_GROUP CURRENT_PEOPLE RATIO
WORKER1 100 1.0
WORKER2 80 0.8
WORKER3 50 0.5
我在寻找的GRAND总数是查询结果底部的CURRENT PEOPLE AND RATIO。我将把它放入APEX Classic报告中。在这个例子中是230和2.3。由于我使用OVER(分区)方法,因此我无法使用任何种类的GROUP BY。
欣赏你可能have..thank你
你不应该使用'(PARTITION BY MONTH || JOB_GROUP)'。对于其中的一种,您可能会进行隐式类型转换,其次可能会因此产生错误的结果。直接使用这两列:'(PARTITION BY MONTH,JOB_GROUP)'。不要使用字符串作为数字''100''是一个字符串,而不是数字。除此之外,您还需要进行隐式数据类型转换。您的情况'MONTH = '01 -DEC-2013''也*受到隐式数据类型转换(并且只会在我的计算机上引发错误)。改用'to_date()'。 –