對於「B號碼」 - (呼叫的號碼),請將每個事件限制爲3.也就是說,從「A號碼」列表中, - (撥打「B號碼」的號碼),我們可能會有多個人撥打同一個「B號碼」。在「B號碼」在總撥號列表中出現超過3次的情況下,請從後面的「A號碼」中刪除它們。ORACLE:如何檢查並刪除重複的列值
我想弄清楚如何檢查並刪除這些重複的「B編號」,當他們大於3次發生。
以下是表格結構的示例列表。
那麼,該數量爲B出現三個以上的時間,我想保留一些,但刪除數量爲B。任何想法?
對於「B號碼」 - (呼叫的號碼),請將每個事件限制爲3.也就是說,從「A號碼」列表中, - (撥打「B號碼」的號碼),我們可能會有多個人撥打同一個「B號碼」。在「B號碼」在總撥號列表中出現超過3次的情況下,請從後面的「A號碼」中刪除它們。ORACLE:如何檢查並刪除重複的列值
我想弄清楚如何檢查並刪除這些重複的「B編號」,當他們大於3次發生。
以下是表格結構的示例列表。
那麼,該數量爲B出現三個以上的時間,我想保留一些,但刪除數量爲B。任何想法?
將結果限制爲3 B Number
最多可以使用row_number()
分析函數輕鬆實現。
select a_number, b_number
from (select a_number, b_number,
row_number() over (partition by b_number order by null) as rn
from your_table)
where rn <= 3
然而,上述查詢不是明確的關於它將保留其 3行(order by null
)。
如果您想在列表中保留B Number
的前三次出現,那麼您需要一種方法來顯式定義列表的順序。你可能有時間戳嗎?
在任何情況下,任何領域(S)定義(一個或多個)列表的順序,使用的row_number()
函數調用的order by
子句中:
row_number() over (partition by b_number order by pick_an_ordering_column)
好的。訂單無關緊要。只有前三次出現的b號碼 –
要按A號碼排序 –
學校工作?你有什麼嘗試?它是如何去的? – jarlh
記錄被刪除的邏輯是什麼? – Siyual
你只想刪除「B」號碼或某些行? –