[英]Query that returns the 10th and 100th post id from a user - data explorer
我正在編寫一個查詢,它將從數據資源管理器架構中獲取Posts
和Users
表,並從每個用戶輸出第10個和第100個post id。 輸出將是第10或第100個帖子ID的列,以及第二列,說明它是該用戶的第10還是第100個帖子。
我很難確定如何從每個用戶那里獲得第10和第100個帖子。 我從計算每個用戶的帖子數開始,但是我的查詢仍然沒有將所有用戶ID分組在一起。
SELECT u.Id, u.DisplayName, p.Id, COUNT(p.Id) as numPost
FROM Users AS u
LEFT JOIN Posts AS p ON u.Id = p.OwnerUserId
GROUP BY u.Id, u.DisplayName, p.Id
我期望該功能輸出每個用戶的帖子數,並查看是否可以從那里提取第10個帖子和第100個帖子,但是我認為我朝錯誤的方向前進。 當前查詢輸出
任何幫助,將不勝感激!
我建議為此使用row_number() over(...)
:
SELECT
uid
, displayname
, MAX(CASE WHEN rn = 10 THEN pid END) AS pid10
, MAX(CASE WHEN rn = 100 THEN pid END) AS pid100
FROM (
SELECT
u.Id AS uid
, u.DisplayName
, p.Id AS pid
, ROW_NUMBER() OVER (PARTITION BY u.Id ORDER BY p.id) AS rn
FROM Users AS u
LEFT JOIN Posts AS p ON u.Id = p.OwnerUserId
) AS up
WHERE (
rn IN (10, 100)
OR rn IS NULL
)
GROUP BY
uid
, displayname
我認為左加入帖子是因為您希望所有用戶都返回,如果是這樣,請注意,對於沒有帖子的任何用戶,將需要where子句中的OR RN IS NULL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.