[英]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.