0

我无法解决以下 SQL 请求:

  1. 说出出演过比“sara allgood”还多的电影以及曾在“戛纳电影节”中获奖的演员的名字。另外,请给出电影名称。

  2. 获取 1970 年至 1990 年间制作的所有电影中获奖电影的百分比。

有几张桌子,但我假设只需要 4 张:'films'、'remakes'、'casts'、'awtypes'

  • “电影”属性:电影ID、电影名称、年份、导演、工作室、奖项

  • 'remakes' 属性:filmid、标题、年份、priorfilm、previousyear

  • 'casts' 属性:filmid、电影名、演员、奖项(10)

  • 'awtypes' 属性:award(10), org(100), country, colloquial(50), year

我有点不清楚如何在第一个查询中将奖项与“戛纳电影节”相匹配,因为奖项字段只有 10 个字符,这意味着它是对 awtypes 表的引用,但我不知道 awtypes 中的哪个字段表包含奖项的名称,我目前无权访问数据库,因此它是 org 或口语。

至于第二个,我不知道如何计算百分比,但似乎应该使用联合运算符解决 1970 年至 1990 年间制作的电影和获奖的电影(我不知道如何为获得至少一个奖项设置条件)。

4

1 回答 1

0

一些提示,希望对你有所帮助!

说出出演过比“sara allgood”还多的电影以及曾在“戛纳电影节”中获奖的演员的名字。另外,请给出电影名称。

根据您所说的属性,我会说您可以通过表格获得正确的awtypes属性。casts它们都包含该award(10)列。鉴于您的数据,我希望该org(100)列包含提供奖品的组织的某些内容,因此在这种情况下,这将是我对cannes film festival内容的猜测。但是你必须尝试一下,看看你会得到什么结果。不幸的是,在这种情况下,通常很难仅根据列名来猜测列的内容。

获取 1970 年至 1990 年间制作的所有电影中获奖电影的百分比。

根据您的问题中所述的信息,我会猜测表中的awardfilms包含一个布尔值或说明电影是否获奖的内容。你得试试这个。如果是这种情况,您可以COUNT(*)对 1970 年至 1990 年间的所有电影使用 a 并对COUNT(*)所有电影WHERE award = 1(或其他内容)使用 a 来获取总数。

您确实可以在计算查询中将这些与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
于 2012-11-08T11:58:43.293 回答