MySQL Group by Max()值来自另一个表的日期(每天一个)

时间:2017-01-21 22:30:22

标签: mysql

我有两张桌子:

数据:

id, name, surname, date, result

统计数据:

id, average, type

我正在尝试获取一个表格结果,每个日期有一条记录,其中“统计信息”表的最大平均值。

E.g。

23  John  Smith  21-01-2017  Pass -  98%  A
17  Tom  Dell    20-01-2017  Pass -  78%  A
9   Will Jones   19-01-2017  Pass -  85%  A 

到目前为止,我尝试了一些查询(没有成功):

SELECT * FROM 'Data'
JOIN 'Stats' ON Data.id = Stats.id
INNER JOIN
        (  SELECT  MAX(average) 
           FROM 'Stats'
           WHERE Stats.type = 'A'
           GROUP BY Data.date
        ) 'Data' ON Stats.id = Data.id
ORDER BY Data.date DESC 

我怎样才能让它发挥作用?谢谢

1 个答案:

答案 0 :(得分:0)

你似乎有一个非常糟糕的数据模型。为什么日期在Data表中而不是status表。

无论如何,您正在处理"日期" /"平均"对,所以你需要将表连在一起两次:

SELECT d.*, s.*
FROM Data d JOIN
     Stats s
     ON d.id = s.id JOIN
     (SELECT d2.date, MAX(s2.average) as max_average
      FROM Data d2 JOIN
           Stats s2 
           ON d2.id = s2.id
      WHERE s2.type = 'A'          
     ) sd2 
     ON sd2.date = d.date AND sd2.max_average = s.average
WHERE s2.type = 'A'
ORDER BY d.date DESC ;