Sql 如何选择保存最多产品的用户ID以及他保存的产品列表
我试图查询保存最多产品的用户ID以及他保存的产品列表Sql 如何选择保存最多产品的用户ID以及他保存的产品列表,sql,sql-server,Sql,Sql Server,我试图查询保存最多产品的用户ID以及他保存的产品列表 +----------------+---------+ | Saved products | user_id | +----------------+---------+ | A | 105531 | | B | 295014 | | C | 104230 | | D | 55023 | | E | 2
+----------------+---------+
| 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我已经用一把小提琴更新了代码