Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从用户数据资源管理器返回第10个和第100个帖子id的查询_Sql_Sql Server_Tsql_Posts_Dataexplorer - Fatal编程技术网

Sql 从用户数据资源管理器返回第10个和第100个帖子id的查询

Sql 从用户数据资源管理器返回第10个和第100个帖子id的查询,sql,sql-server,tsql,posts,dataexplorer,Sql,Sql Server,Tsql,Posts,Dataexplorer,我正在编写一个查询,该查询将接收来自的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
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篇帖子,但我认为我做的方向不对


任何帮助都将不胜感激

我建议使用(…)上方的
行编号()
来实现此目的:

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子句中的
或RN为NULL
,对于没有文章的任何用户都需要


如果用户没有第10篇或第100篇帖子怎么办?