我有两张桌子:
数据:
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
我怎样才能让它发挥作用?谢谢
答案 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 ;