推 fantasywater:感謝回答,但是我沒有要做平均,還是很感謝︿︿ 02/05 00:27
※ 引述《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