请教一个查询数据表中某个字段的值出现数量前3位的SQL写法!?着急。在线等!!!

时间:2022-02-26 19:15:00
表字段有
型号、SN号码、故障代码、工位、分析员、维修状态、位置、原因、日期时间、班次

请问我想查询<故障代码>出现次数最多的前3位。应该如何写SQL查询语句呢???

举例若干字段的记录如下:
UT107 156265013 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156265224 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156265334 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156264070 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156264080 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156264749 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156265531 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156265033 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156264525 P11 Power 葛峰英 已修复 在线 无分析记录
UT107 156264545 P11 Power 葛峰英 已修复 在线 CD
UT107 156262168 P4 Power 葛峰英 已修复 在线 无分析记录
UT107 156264017 P12 Power 唐志英 已修复 在线 CD
UT107 156264064 P12 Power 唐志英 已修复 在线 CD
UT107 156265756 P14 Power 唐志英 已修复 在线 无分析记录
UT107 156254648 F7 Function 唐志英 已修复 在线 CD
UT107 156263806 I1 Initial 唐志英 已修复 在线 CD
UT107 156265073 I4 Initial 唐志英 已修复 在线 CD
UT107 156265069 I4 Initial 唐志英 已修复 在线 CD
UT107 156265067 I4 Initial 唐志英 已修复 在线 CD
UT107 156264138 I8 Initial 唐志英 已修复 在线 CD
UT107 156265027 I8 Initial 唐志英 已修复 在线 CD
UT107 156263761 I8 Initial 唐志英 已修复 在线 CD

好比以上记录条。故障代码出现次数最多的前3位分别是pwer、initial、function。
应该如何用SQL实现呢???

6 个解决方案

#1


select substring(故障代码,1,3) as 新故障代码 from table

#2


不好意思,看错意思了。上面回复作废

#3


select  故障代码 as cc from 表 
group by 故障代码
order by count(*)

#4


select top 3 故障代码 as cc from 表 
group by 故障代码
order by count(*)

#5


select top 3 故障代码,出现次数 from 
(
select 故障代码,count(故障代码) as 出现次数
from 表 group by 故障代码
) a
order by a.出现次数 desc

#6


select 故障代码,count(故障代码) as 出现次数
from 表 group by 故障代码
上面执行的查询结果形成a么???

#1


select substring(故障代码,1,3) as 新故障代码 from table

#2


不好意思,看错意思了。上面回复作废

#3


select  故障代码 as cc from 表 
group by 故障代码
order by count(*)

#4


select top 3 故障代码 as cc from 表 
group by 故障代码
order by count(*)

#5


select top 3 故障代码,出现次数 from 
(
select 故障代码,count(故障代码) as 出现次数
from 表 group by 故障代码
) a
order by a.出现次数 desc

#6


select 故障代码,count(故障代码) as 出现次数
from 表 group by 故障代码
上面执行的查询结果形成a么???