我在解决以下SQL请求时遇到问题:
给出比“sara allgood”更多电影中扮演过角色的演员的名字,以及曾参加过“戛纳电影节”的电影。另外,请提供电影名称。
获取1970年至1990年间制作的所有电影中获奖的电影百分比。
有几个表,但我假设只需要4个表: '电影','重拍','演员','awtypes'
'电影'属性:电影,电影名称,年份,导演,工作室,奖项
'重拍'属性:filmid,title,year,priorfilm,prioryear
'casts'属性:filmid,filmname,actor,award(10)
'awtypes'属性:奖励(10),组织(100),国家,口语(50),年度
我有点不清楚如何在第一次查询中将奖项与'戛纳电影节'相匹配,因为奖励字段只有10个字符,这意味着它是对awtypes表的引用,但我不知道哪个字段在awtypes表中包含奖项的名称,我目前无法访问数据库,所以它是组织或口语。
至于第二部分,我不知道如何计算百分比,但似乎应该使用工会操作员来解决1970年至1990年期间制作的电影以及获奖的电影(我不知道)知道如何为至少一个奖项设置条件。
答案 0 :(得分:0)
一些提示,我希望他们帮助你!
给出比'sara更多电影中扮演过角色的演员的名字 allgood'和谁曾参与过赢得'戛纳电影'的电影 节'。另外,请给出电影名称。
根据您所说的属性,我会说您可以通过awtypes
表获得正确的casts
属性。它们都包含award(10)
列。根据您的数据,我希望org(100)
列包含提供奖品的组织内容,因此在这种情况下我会猜测cannes film festival
内容。但你必须尝试一下,看看你得到了什么结果。不幸的是,在这种情况下,通常很难根据列名来猜测列的内容。
获取所有制作的电影中获奖的电影百分比 在1970年和1990年之间。
根据您问题中所述的信息,我会猜测award
表中的films
列包含一个布尔值,或说明电影是否赢得奖励的内容。你必须试试这个。如果是这种情况,您可以在1970年到1990年之间的所有电影上使用COUNT(*)
,在所有电影COUNT(*)
(或其他)上使用WHERE award = 1
来获取总数。
您确实可以将计算查询中的这些与UNION
组合在一起。可能对您有帮助的示例:
SELECT SUM(cnt1) / SUM(cnt2) ... do the right computation here ...
FROM ( SELECT COUNT(*) AS cnt1
,0 AS cnt2
FROM table1
UNION ALL
SELECT 0 AS cnt1
,COUNT(*) AS cnt2
FROM table2) AS sub