有两个表,
table1:
name | surname | firstname
cookie | Smith | John
cake | Miller | Ben
表2:
name | day | points1 | points2
cookie | 1 | 5 | 5
cookie | 1 | 4 | 6
cake | 1 | 7 | 3
cake | 1 | 7 | 3
cookie | 2 | 4 | 4
cookie | 2 | 4 | 4
cake | 2 | 1 | 2
cake | 2 | 3 | 4
我们需要这一天 和SUM(points1 + points2)AS总计 GROUP BY日,名称 以及table1的姓氏和名字, table1和table2中的名称匹配, 如果总数大于15。 此外,结果应该是ORDER BY总DESC,姓ASC。
结果应该产生:
surname | firstname | day | total
Miller | Ben | 1 | 20
Smith | John | 1 | 20
Smith | John | 2 | 16
Ben Miller(蛋糕)没有出现,因为他的第2天总共只有10个。
请注意,table2中的每个名称在table1中都有一个条目。
答案 0 :(得分:0)
好吧,如果您想在结果中显示“ surname ”和“ firstname ”,那么您也必须按这些字段进行GROUP(所有SELECT字段在GROUP BY表达式必须是聚合(SUM,AVG,...)或出现在GROUP BY子句中。
通过使用HAVING,您可以限制GROUP BY的结果。
我认为这段代码可行:
SELECT surname, firstname, day, (SUM(points1) + SUM(points2)) AS total
FROM table1, table2
WHERE table1.name = table2.name
GROUP BY surname, firstname, day
HAVING (SUM(points1) + SUM(points2) > 15
ORDER BY total DESC, surname ASC;