[英]How to Find Nth Row in Partition Given a Condition SQL?
您好,我有以下表格:
品牌欄:Brand_ID(主鍵)、公司名稱
訂單列:ORDER_ID(Primary Key), USER_ID, BRAND_ID(Foreign Key), DATE
如果訂單來自 COMPANY_NAME X,我正在嘗試為每個 USER_ID 獲取 2018 年之后下的第 3 個訂單。我對如何進行有點迷茫。 我試過使用窗口函數,但我認為它不允許我在內部使用 WHERE 函數?
我有以下代碼:
SELECT *
FROM (
SELECT O.*,
row_number() OVER (
PARTITION BY USER_ID
WHERE DATE >= '2018/01/01'
ORDER BY DATE
) as rank
FROM Orders O
) O
JOIN Brands B ON O.BRAND_ID = B.BRAND_ID
WHERE O.rank = 3 AND B.COMPANY_NAME = 'X';
您想在where
子句中進行過濾——這不是窗口函數規范的一部分:
SELECT *
FROM (SELECT O.*,
row_number() OVER (PARTITION BY USER_ID
ORDER BY DATE
) as rank
FROM Orders O
WHERE DATE >= '2018-01-01'
) O JOIN
Brands B
ON O.BRAND_ID = B.BRAND_ID
WHERE O.rank = 3 AND B.COMPANY_NAME = 'X';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.