我是SQL的新手,也是StackOverflow的新手,所以如果这有点基础,我深表歉意。
但是,我正在研究“星球大战”数据库,问题如下:
获取星舰积分的数量,平均成本和标准成本 参与每部电影。显示电影标题,飞船数量,平均和 标准差成本,保留两位小数。按平均费用对结果进行排序。
我建立了一个有效的查询,但是唯一的问题是,如果在电影中多次使用“星际飞船”,则价格的总和是使用过的总和。弄乱了平均值和标准偏差。
SELECT film.title,
ROUND(AVG(starship.cost_in_credits),2)"Average Cost",
ROUND(STDDEV(starship.cost_in_credits),2)"Standard Deviation",
COUNT(DISTINCT starship.id)"Number of Starships"
FROM starship
INNER JOIN pilot ON starship.id = pilot.starship_id
INNER JOIN character ON pilot.character_id = character.id
INNER JOIN cast ON character.id = cast.character_id
INNER JOIN film ON cast.film_id = film.id
GROUP BY film.title
WHERE
ORDER BY ROUND(AVG(starship.cost_in_credits),2) ASC;
如果有帮助,请在https://ibb.co/rHJBPbv上查看模式的图像
这些是我使用DISTINCT尝试过的结果,这就是为什么“无船运货”行准确的原因。
TITLE Average Cost Standard DEV No of Ships
The Force Awakens 178333.17 69976.27 3
Return of the Jedi 10564583.17 36037853.6 8
A New Hope 11518181.45 37637696.07 6
Revenge of the Sith 27934444.33 55031032.47 7
Attack of the Clones 41793333.33 72059087.79 4
The Phantom Menace 50946666.67 61158466.52 5
我完全迷住了。在这方面的任何帮助将不胜感激。
非常感谢!