【发布时间】:2011-05-23 18:53:31
【问题描述】:
很抱歉,如果我的提问听起来很愚蠢,但我使用 sql 提示的时间不长,我正在为学校复习一些章节复习工作。我很难把头缠在他们身上。
例如,我在 oracle 中对我所做的测试数据库提出的一个问题是“显示每日拍卖总数的前 10%。我的答案是(有效):
SELECT DAYOFWEEK, DAILY_TOTAL
FROM (
SELECT T.DAYOFWEEK,
SUM(AF.TOTAL_NUM_OF_AUCTIONS) AS DAILY_TOTAL,
CUME_DIST() OVER (ORDER BY SUM(AF.TOTAL_NUM_OF_AUCTIONS) ASC) AS Percentile
FROM TIME_DIM T, AUCT_FACT AF
WHERE AF.TIME_ID = T.TIME_ID
GROUP BY T.DAYOFWEEK)
WHERE Percentile > .9
ORDER BY Percentile DESC;
我现在遇到的问题是,它说,我尝试用不同的查询来实现这个输出,我问了我的老师,他们说他们打算使用提示,我查看了我对他们的笔记,然后它确实没有足够彻底地解释如何使用提示优化此查询,或者以更简单的方式进行。
任何帮助将不胜感激
=) 谢谢大家!
【问题讨论】:
-
这个查询是否有效?内联视图具有分析功能和“分组依据”。我不认为你可以两者兼得。
-
你说你老师说的是错的。提示永远不应该改变查询的逻辑结果(如果他们这样做了,那将是一个错误)。
标签: sql oracle ranking query-hints