gpt4 book ai didi

sql - 如何在按计数排序的sql表中获取10个中间用户

转载 作者:行者123 更新时间:2023-12-02 05:43:11 25 4
gpt4 key购买 nike

我有两个具有以下架构的表:

表A

usernName, email (one email per user)

表B

userName, product (many products per user)

我想编写一个返回 userName + email 的查询产品数量最多的10个用户,中间的10个用户和产品数量最少的10个用户。

我事先核实有超过30条记录(避免重复)

我知道groupby不会帮助我。我应该将排名与 partitionby 一起使用吗? ?groupby 之间有什么区别?和 partitionby

这个应该怎么写?

最佳答案

SELECT  userName, email
FROM (
SELECT *,
ROW_NUMBER() OVER (ORDER BY products DESC) rn,
COUNT(*) OVER () AS cnt
FROM (
SELECT userName, email, products
FROM a
CROSS APPLY
(
SELECT COUNT(*) products
FROM b
WHERE b.userName = a.userName
) p
)
) q
WHERE rn <= 10
OR
rn >= cnt - 10
OR
rn BETWEEN cnt / 2 - 5 AND cnt / 2 + 4

关于sql - 如何在按计数排序的sql表中获取10个中间用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com