看板 Database 關於我們 聯絡資訊
※ 引述《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
fantasywater:感謝回答,但是我沒有要做平均,還是很感謝︿︿ 02/05 00:27