2010-10-18 31 views
1

我有一個列'Date,Name,Score'列的表。MySQL - 爲最大值的子集計算AVG

我希望得到的MAX(分數),用於其共用一個值的行(如爲同一日期,甚至名稱),平均他們給我一個數字之前,比如:

--- - 日期----- | - 名稱 - |得分
2010-10-10 |約翰史密斯| 86
2010-06-05 |泰迪瓊斯| 71
2010-10-10 |約翰史密斯| 52
2010-06-05 |泰迪瓊斯| 68
2010-08-08 | Joe Bloggs | 79
2010-10-10 |約翰史密斯| 46

所以做的一個MAX(分數)以上都會給我86.不過,我想是這樣的:

MAX(分數)給我值86(MAX日期10 -10),79(MAX 08-08)和71(MAX 06-05),我可以平均得到78.67。我希望這是可能的,而不必訴諸臨時表?

所有的答覆表示感謝,謝謝。

回答

2

日常最大值的平均總:

SELECT AVG(dailyMax) AS avgOfDailyMax 
FROM (SELECT Date, MAX(Score) AS dailyMax FROM MyTable GROUP BY Date) as DailyMaxTable 

和日常最大值:

SELECT Date, MAX(Score) AS dailyMax 
FROM MyTable 
GROUP BY Date 
+1

你是天才,謝謝! – cbros2008 2010-10-18 19:28:35

1
select Date, max(Score) as MaxScore 
from MyTable 
group by Date 

如果你想在Name爲好,做

select m.Date, m.Name, m.Score 
from (
    select Date, max(Score) as MaxScore 
    from MyTable 
    group by Date 
) mm 
inner join MyTable on mm.Date = m.Date 
    and mm.MaxScore = m.Score 
+0

感謝迴應,但一旦我到達那裏,如何我會平均所有'MAX'分數嗎? – cbros2008 2010-10-18 19:13:45