"分组"高级SQL查询

时间:2017-11-10 19:46:40

标签: mysql sql

enter image description here

我正在学习SQL查询。我附上上面模特的照片。 给定一组" peopleIDs",我怎么能找到有多少类型可用,并且在每种类型下有多少" Magics"在那儿。 人与人之间的多样性"和"结果"是一对多,"结果"和" Magic_score"一对多," magic_score"和#34;魔术"许多到一个。 我是否首先得到所有可用的类型"然后计算"魔法"在每种类型下?

1 个答案:

答案 0 :(得分:2)

假设您的意思是Result.Type,您可以通过Type加入表格和小组,并计算Magic

SELECT r.Type, COUNT(m.Magic_ID), COUNT(r.peopleID)
FROM Result r
INNER JOIN Magic_Score ms ON r.Result_ID = ms.Result_ID
WHERE r.peopleID in groupPeopleIDs
GROUP BY r.Type

鉴于Result.TypeMagic.Type相同,并且每个Result仅指向匹配类型的Magic,答案应该相同,但按Magic.Type进行分组将类似:

SELECT m.Type, COUNT(m.Magic_ID)
FROM Result r
INNER JOIN Magic_Score ms ON r.Result_ID = ms.Result_ID
INNER JOIN Magic m ON ms.Magic_ID = m.Magic_ID
WHERE r.peopleID in groupPeopleIDs
GROUP BY m.Type