[英]Count number of cases where visitor rank is higher on one page then on another
我想計算在/page_y
中的排名高於在page_x
中排名的數字fullvisitorID
。 所以在這種情況下,結果將是 1,只有111
全訪問者 ID | 秩 | 頁 |
---|---|---|
111 | 1 | /page_x |
111 | 2 | /page_y |
222 | 1 | /page_x |
222 | 2 | /page_x |
333 | 2 | /page_x |
333 | 1 | /page_y |
考慮以下方法
select count(*) from (
select distinct fullvisitorID
from your_table
qualify max(if(page='/page_y',rank,null)) over win > max(if(page='/page_x',rank,null)) over win
window win as (partition by fullvisitorID)
)
對於計數,您可以使用COUNT
和GROUP BY
SELECT fullvisitorID, COUNT(fullvisitorID), Page FROM table t1
WHERE rank = (SELECT MAX(t2.rank) FROM table t2 WHERE t2.fullvisitorID = t1.fullvisitorID)
Group By fullvisitorID, Page
您可以通過匹配“ fullvisitorID ”字段在兩個表之間應用SELF JOIN
,然后強制
SELECT *
FROM tab t1
INNER JOIN tab t2
ON t1.fullvisitorID = t2.fullvisitorID
AND t1.page = '/page_y'
AND t2.page = '/page_x'
AND t1.rank > t2.rank
表分離方法:
DECLARE @t1 TABLE ( fullvisitorID INT, [rank] INTEGER,[page] VARCHAR (max)) --here where page = x
DECLARE @t2 TABLE ( fullvisitorID INT, [rank] INTEGER,[page] VARCHAR (max)) --here where page = y
INSERT INTO @t1 SELECT * FROM @test t WHERE t.[page] LIKE '/page_x'
INSERT INTO @t2 SELECT * FROM @test t WHERE t.[page] LIKE '/page_y'
SELECT COUNT(*) FROM @t1 INNER JOIN @t2 ON [@t1].fullvisitorID = [@t2].fullvisitorID WHERE [@t1].rank < [@t2].rank
SELECT COUNTIF(page = '/page_y') cnt FROM ( SELECT * FROM sample_table WHERE page IN ('/page_x', '/page_y') QUALIFY ROW_NUMBER() OVER (PARTITION BY fullvisitorID ORDER BY rank DESC) = 1 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.