簡體   English   中英

Oracle SQL:在其他列中選擇兩列的不同組合

[英]Oracle SQL: Select Distinct combination of two columns among other columns

我是Oracle SQL初學者,希望這里有人可以幫助我。

我有一個相當基本的Select查詢,目前為止可以使用。 這是在選擇點擊數據,即用戶點擊網站上某類按鈕的頻率。

我的問題是, 我需要排除來自同一用戶的重復或多次點擊,而僅排除重復的那些

每個用戶都有一個唯一的ID( CUSTOMER_ID ),我可以獲取HIT_DAY或HIT_DATETIME來確定單擊時間。 但是,在某些情況下,用戶需要在同一天單擊同一類別的多個按鈕。

是否有類似“讓我僅記錄用戶( CUSTOMER_ID )不同或單擊時間( HIT_DATETIME )在+/- 10秒內唯一的記錄 ?”或“在此我可以做的其他事情?”的內容?其他唯一標識符。

我的查詢:

SELECT
    owh.HIT_DAY
    , owh.HIT_DATETIME
    , COUNT(owh.CUSTOMER_ID) AS COUNT_CUSTOMER_ID
    , owh.IS_P_CUSTOMER AS P_CUSTOMER
    , owh.SHORTENED_URL AS URL_SHORTENED
    , owh.MP
FROM
    O_WIN_HITS owh
WHERE 1=1
    AND ...
    AND ...
    AND ...
    AND ...
GROUP BY
    owh.HIT_DAY
    , owh.HIT_DATETIME
    , owh.IS_P_CUSTOMER
    , owh.SHORTENED_URL
    , owh.MP
ORDER BY
    owh.HIT_DAY DESC

注意:這是較大查詢的一部分。

邁克非常感謝您的任何幫助,邁克

我想你想要這樣的東西:

select owh.*
from (select owh.*,
             lag(hit_datetime) over (partition by customer_id order by hit_datetime) as prev_hdt
      from O_WIN_HITS owh
     ) owh
where prev_hdt is null or
      hit_datetime > prev_hdt + 10 / (24 * 60 * 60);

這將返回行,該行要么是客戶的第一行,要么是在上次匹配之后10秒鍾以上為客戶顯示的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM