相同公司名称只展示最高接入数的季度,该效果如何实现呢,下图是数据库命令处理

1681368888968243.zip

FineReport 帆软好难 发布于 2023-4-14 08:50
1min目标场景问卷 立即参与
回答问题
悬赏:5 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-4-14 09:18(编辑于 2023-4-14 14:39)

由于我是虚拟数据。所以写得多一些,你直接引用表的话不会太长的(因为不知道你的mysql版本,如果是8以上的话,开窗函数更简单,一段就搞定了。如果是8以下没有开窗函数。所以相对要多写一段)

select t.company_name,t.jd_name,t.number_cot from(

select 'qqctn' as company_name,'一季度' as jd_name,75 as number_cot union all

select '山东公司' as company_name,'一季度' as jd_name,72 as number_cot union all

select '董家公司' as company_name,'三季度' as jd_name,68 as number_cot union all

select 'qqct' as company_name,'二季度' as jd_name,94 as number_cot union all

select '大山公司' as company_name,'四季度' as jd_name,54 as number_cot union all

select 'qqctn' as company_name,'二季度' as jd_name,53 as number_cot

)t join 

(select t2.company_name,max(t2.number_cot) as number_cot from (

select 'qqctn' as company_name,'一季度' as jd_name,75 as number_cot union all

select '山东公司' as company_name,'一季度' as jd_name,72 as number_cot union all

select '董家公司' as company_name,'三季度' as jd_name,68 as number_cot union all

select 'qqct' as company_name,'二季度' as jd_name,94 as number_cot union all

select '大山公司' as company_name,'四季度' as jd_name,54 as number_cot union all

select 'qqctn' as company_name,'二季度' as jd_name,53 as number_cot

) t2

group by t2.company_name) t3 on t.company_name=t3.company_name and t.number_cot=t3.number_cot

image.png

------------

select 

ORG_CNAME as company_name,

SLOT_TIME as jd_name ,

ACCESS_NUM as number_cot 

from tbiqd01 a 

join (select ORG_CNAME as company_name,max(ACCESS_NUM) as number_cot from tbiqd01 

  group by company_name) t3 on a.company_name=t3.company_name and a.ACCESS_NUM=t3.number_cot 

where a.SLOT_TIME_TYPE=1

  • 帆软好难 帆软好难(提问者) t 跟 t2 啥意思啊,表名吗?为啥要join一下呢,我使用的数据库名叫tbiqd01,上边命令行的t就相当于tbiqd01吗,那t2该写啥呢,我就使用了一个数据库表
    2023-04-14 13:35 
  • CD20160914 CD20160914 回复 帆软好难(提问者) t和t2就是我子查询的临时表的别名呀。。join是为了找到两部分都有的,这样就排除了那条重复的数据了。。
    2023-04-14 13:36 
  • CD20160914 CD20160914 回复 帆软好难(提问者) t2就是为了按名称取分数最大的一条数据。。。你都要用表名tbiqd01就行了。只是t2里面按名称后,只会有一个名称出来。而且取这个名称分数最大的一条
    2023-04-14 13:37 
  • 帆软好难 帆软好难(提问者) 回复 CD20160914 select ORG_CNAME as company_name,max(ACCESS_NUM) as number_cot from tbiqd01 group by ACCESS_NUM 我是用这个命令怎么取不出来最大的那一条数据呀,还是原样
    2023-04-14 14:01 
  • CD20160914 CD20160914 回复 帆软好难(提问者) group by 后面要org_cname呀。。。不是access_sum
    2023-04-14 14:03 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-4-14 08:54

SqlServer?oracle?mysql?

  • 帆软好难 帆软好难(提问者) mysql数据库
    2023-04-14 08:56 
  • Z4u3z1 Z4u3z1 回复 帆软好难(提问者) 抱歉不咋会,建议用存储过程处理
    2023-04-14 08:57 
  • 2关注人数
  • 251浏览人数
  • 最后回答于:2023-4-14 14:39
    请选择关闭问题的原因
    确定 取消
    返回顶部