簡體   English   中英

從用戶返回第10和第100個帖子ID的查詢-數據瀏覽器

[英]Query that returns the 10th and 100th post id from a user - data explorer

我正在編寫一個查詢,它將從數據資源管理器架構中獲取PostsUsers表,並從每個用戶輸出第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.

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