作者flakchen (flak)
看板Database
标题Re: [SQL ] 如何找出频率最高的查询一问
时间Mon Feb 4 16:09:32 2008
※ 引述《flakchen (flak)》之铭言:
: 标题: Re: [SQL ] 如何找出频率最高的查询一问
: 时间: Mon Feb 4 13:38:58 2008
:
: ※ 引述《fantasywater (狂想)》之铭言:
: : +------+--------+ 如左表
: : | dno | salary | 请问:要找出每一个dno里面薪水出现频率最多
: : +------+--------+ 得查询应该要怎麽写?
: : | 5 | 30000 |
: : | 5 | 25000 | 我只会列出每一个dno里面最高最低和频均的薪水
: : | 5 | 25000 | 不知道如果要先计算出现频率,
: : | 5 | 38000 | 再把频率最高的结果抓出来的查询怎麽写
: : | 1 | 55000 |
: : | 4 | 43000 |
: : | 4 | 25000 |
: : | 4 | 25000 |
: : +------+--------+
: : +------+--------+ 左边这个是我希望得到的结果
: : | dno | salary | MYSQL或是标准SQL里面有可以计算出现频率最多的方法吗?
: : +------+--------+
: : | 5 | 25000 |
: : | 1 | 55000 |
: : | 4 | 25000 |
: : +------+--------+
:
: 计算频率:
: Select dno,salary,count(*) From Table Group By dno,salary
: 这里count(*)不是频率,但每个dno中count(*)最多的就是频率最高
:
: 所以接下来找每个dno中频率最高的就可以...
: Select Distinct T1.dbo,T1.Salary
: From Table T1
: Where salary=(select top 1 T2.salary
: from Table T2
: where T1.dno=T2.dno
: group by T2.dno
: order by count(*) desc)
:
: 只会M$-SQL,请自行转成MySQL语法
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 210.64.238.212
: 推 PsMonkey:他还要平均的耶.,... XD (我一定会交给前端作 XD) 02/04 14:45
再JOIN一次就可以了
Select Distinct T1.dno,T1.Salary,T3.MinSalary,T3.MaxSalary,T3.AvgSalary
From Table T1
INNER JOIN (select dno,min(salary) as MinSalary,
max(salary) as MaxSalary,
avg(salary) as AvgSalary
from Table
group by dno) T3
ON T1.dno=T3.dno
Where salary=(select top 1 T2.salary
from Table T2
where T1.dno=T2.dno
group by T2.dno
order by count(*) desc)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.64.238.212
1F:推 fantasywater:感谢回答,但是我没有要做平均,还是很感谢︿︿ 02/05 00:27