取每个企业的前10名,做个表,如何写语句:

企业1有20条数据,企业2有30条数据。。。。。企业8有50条数据,取每个企业的前10名,做个表,如何写语句:select * from (SELECT ROW_NUMBER() OVER (ORDER BY avg(zongshu) DESC ) AS XUHAO,gongsi,zhibiao,avg(zongshu) as zongshu FROM biao where createdate>='2024-07-08'  and createdate<='2024-07-09'  group by gongsi,zhibiao ),每个企业取10条,假如10个企业,就取100条数据

FineReport 张宇 发布于 2024-7-10 16:06 (编辑于 2024-7-10 16:10)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-7-10 16:08

类似

SELECT * FROM (

SELECT ROW_NUMBER() OVER(PARTITION BY gongsi ORDER BY zongshu DESC) [NUM_],* FROM biao where createdate>='2024-07-08'  and createdate<='2024-07-09' 

) T WHERE T.NUM_<=10

  • 张宇 张宇(提问者) 这样不对,这样结果是整个大集团的排名,结果是10条数据,正确应该是每个企业取10条,假如10个企业,就取100条
    2024-07-10 16:10 
  • Z4u3z1 Z4u3z1 回复 张宇(提问者) PARTITION BY gongsi 就是按照公司分组啊............
    2024-07-10 16:15 
  • 张宇 张宇(提问者) 回复 Z4u3z1 谢谢
    2024-07-10 16:38 
最佳回答
0
CD20160914Lv8专家互助
发布于2024-7-10 16:17

---------这样就行了。测试是可以的-------------------

select 

t2.* from (

select 

t1.*,

ROW_NUMBER() OVER(PARTITION BY t1.gongsi ORDER BY zongshu desc) AS RN

from (

SELECT

gongsi,

zhibiao,

avg(zongshu) as zongshu 

FROM biao 

where createdate>='2024-07-08'  

and createdate<='2024-07-09' 

group by gongsi,zhibiao ) t1

) t2

where t2.RN<=10

最佳回答
0
很困想睡觉Lv6初级互助
发布于2024-7-10 16:28(编辑于 2024-7-10 16:40)

WITH RankedData AS (  

    SELECT   

        t1.gongsi,  

        t1.zhibiao,  

        ROW_NUMBER() OVER (PARTITION BY t1.gongsi ORDER BY t1.zongshu DESC) AS RN  

    FROM   

        (SELECT   

            AVG(zongshu) AS zongshu,   

            gongsi,   

            zhibiao   

        FROM   

            biao  

        WHERE   

            createdate >= '2024-07-08' AND createdate <= '2024-07-09'   

        GROUP BY   

            gongsi, zhibiao  

        ) t1  

)  

SELECT   

    gongsi,  

    zhibiao,  

    RN  

FROM   

    RankedData  

WHERE   

    RN <= 10;

  • 3关注人数
  • 185浏览人数
  • 最后回答于:2024-7-10 16:40
    请选择关闭问题的原因
    确定 取消
    返回顶部