这是两个带有架构的表:
舰船(名称、发射年份、国家、数量、枪号、位移)
战斗(舰船、战斗名称、结果)
一个典型的 Ships 元组是:
(“新泽西”,1943,“美国”,9、16、46000)
这意味着新泽西号战列舰于1943年下水;它属于美国,携带 9 门 16 英寸(口径或枪管内径)的火炮,重 46,000 吨。
Battles 的典型元组是:
(“胡德”、“北大西洋”、“沉没”)
也就是说,HMS Hood 在北大西洋海战中沉没。其他可能的结果是“正常”和“损坏”。
这里有一个棘手的问题: 对于苏里高海峡海战,对于参与那场战斗的每个国家(有一艘或多艘战列舰参加),请给出其被击沉的战列舰数量。注意:这个问题非常棘手。特别是,您需要处理一个国家参与战斗但没有任何船只沉没的(历史)案例。
到目前为止我所尝试的。
SELECT country,COUNT(name)
FROM ships RIGHT JOIN battles
ON ships.name=battles.ship
WHERE battleName='Battle1' AND result='sunk'
GROUP BY country