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 如何选择保存最多产品的用户ID以及他保存的产品列表_Sql_Sql Server - Fatal编程技术网

Sql 如何选择保存最多产品的用户ID以及他保存的产品列表

Sql 如何选择保存最多产品的用户ID以及他保存的产品列表,sql,sql-server,Sql,Sql Server,我试图查询保存最多产品的用户ID以及他保存的产品列表 +----------------+---------+ | Saved products | user_id | +----------------+---------+ | A | 105531 | | B | 295014 | | C | 104230 | | D | 55023 | | E | 2

我试图查询保存最多产品的用户ID以及他保存的产品列表

+----------------+---------+
| Saved products | user_id |
+----------------+---------+
| A              | 105531  |
| B              | 295014  |
| C              | 104230  |
| D              | 55023   |
| E              | 234510  |
| E              | 105531  |
| ……             | ……      |
| F              | 234510  |
| K              | 2512201 |
| M              | 2253121 |
| O              | 3000451 |
+----------------+---------+ 

如果您只希望一个用户拥有最多的产品(在平局的情况下),则可以使用相关子查询:

select t.*
from t 
where t.user_id = (select t2.user_id
                   from t t2
                   group by t2.user_id
                   order by count(*) desc
                   fetch first 1 row only
                  );

如果您只希望一个用户拥有最多的产品(在平局的情况下),则可以使用相关子查询:

select t.*
from t 
where t.user_id = (select t2.user_id
                   from t t2
                   group by t2.user_id
                   order by count(*) desc
                   fetch first 1 row only
                  );

以下查询应执行您想要的操作:

SELECT TOP 1 WITH TIES [User_ID]
   ,STRING_AGG([Product],',') AS [Product List]
   ,COUNT(DISTINCT([Product])) AS [Products Count]
FROM YourTable
GROUP BY [User_ID]
ORDER BY [Products Count] DESC

以下查询应满足您的要求:

SELECT TOP 1 WITH TIES [User_ID]
   ,STRING_AGG([Product],',') AS [Product List]
   ,COUNT(DISTINCT([Product])) AS [Products Count]
FROM YourTable
GROUP BY [User_ID]
ORDER BY [Products Count] DESC

您好,如何获得产品列表?您的DBMS和版本是什么?i、 e.SQL Server、Oracle、PostgreSQL和Microsoft SQL Server管理Studio@Junmai我已经用一个工作的fiddlehi更新了代码,如何获得产品列表?哪一个是您的DBMS和版本?i、 e.SQL Server、Oracle、PostgreSQL和Microsoft SQL Server管理Studio@Junmai我已经用一把小提琴更新了代码