我是需要某些建議的SQL新手。什麼是最有效的(運行速度最快的查詢)的方式,採取以下最佳Oracle SQL查詢完成在單個表中包含〜7,000,000條記錄的多個列的分組
選擇表中的所有列離職後
-Performing一個「GROUP BY」基於包含在兩列中的唯一值:「 top_line_id「和」external_reference「。
- 根據包含在不同字段(如support_id)中的最大值或最小值(無論哪一個),從每個組中選擇一條記錄。
我的團隊中有人提供了下面的查詢,但我似乎無法讓它工作。當我嘗試執行它時收到一條錯誤消息,指出「無效關係運算符」。
Select *
from STAGE.SFS_GH_R3_IB_ENTLMNT_CONTACTS
Where support_id, external_reference, top_line_id in (
select max(support_id),
external_reference,
top_line_id from STAGE.SFS_GH_R3_IB_ENTLMNT_CONTACTS
)
還有一件事 - 我們正在執行組的列通過在某些記錄中包含空值。我們希望那些排除在查詢之外的人。
您可以提供的任何援助非常感謝。
感謝戈登。我沒有考慮使用row_number和「order by」子句。我會試一試併發布結果。 – Sean
Hi Gordon,在Oracle 10g中是「row_number」和「seqnum」僞列。蟾蜍沒有將「row_number」識別爲保留字,但它確實承認了ROWNUM。蟾蜍也沒有認出「seqnum」。我可以用「sequence.CURRVAL」或「sequence.NEXTVAL」來代替「seqnum」嗎? – Sean
我想出了錯誤。您上面提供的查詢是100%正確的,除了我需要在t之後包含逗號。* – Sean