【问题标题】:SQL Query to find greatest value among all in the same tableSQL查询在同一个表中查找最大值
【发布时间】:2014-12-27 09:19:12
【问题描述】:

我是 sql 查询和执行查询的新手:

我在网上查了一些例子,但没有成功。

这里是查询

SELECT m.genre, m.movie_title, m.release_year, m.movie_length 
FROM MOVIE m GROUP BY m.genre, m.movie_title, m.release_year,m.movie_length 
ORDER BY m.movie_length asc;

如果有人可以解释我如何获得这些值,将非常感谢您的帮助。

谢谢

【问题讨论】:

  • 您的问题已经得到解答,但下次请只选择一个 RDBMS 标签,而不是两个(mysqloracle11g)。这些是具有不同 SQL 语法的不同 RDBMS 引擎。如果您需要解决这两个问题,请说明您的问题并说明需要的原因。

标签: mysql sql oracle11g


【解决方案1】:

要获得给定类型的所有电影的最长长度,您可以使用 MAX() 聚合函数。您所要做的就是按类型分组。这有点棘手,因为您不能直接跳入并选择电影标题,否则将无法正确分组。首先获取它的类型和最大电影长度:

SELECT m.genre, MAX(m.movie_length) AS longestMovie
FROM movie m
GROUP BY m.genre;

完成此操作后,您可以将其与您的桌子连接并获得最大电影数:

SELECT m.genre, m.movie_title, m.release_year, m.movie_length
FROM movie m
JOIN (SELECT m.genre, MAX(m.movie_length) AS longestMovie
      FROM movie m
      GROUP BY m.genre) t
ON t.genre = m.genre AND t.longestMovie = m.movie_length;

这是一个有效的SQL Fiddle

【讨论】:

  • 这确实有帮助,但它并没有选择所有电影长度最长的类型。关于我如何实现这一目标的任何想法?
  • @Mani 我最初误解了你的问题,请参阅编辑。
  • 谢谢,这很有意义。我不知道我们可以在同一张表中进行连接。谢谢
  • @Mani 没问题。如果您以前从未见过这样的事情,那将是一个棘手的问题。
【解决方案2】:
SELECT m.genre, m.movie_title, m.release_year, m.movie_length
FROM MOVIE AS m ORDER BY m.movie_length DESC LIMIT 1;

这应该是你要找的。​​p>

【讨论】:

  • 谢谢你的回答,但查询仍然没有执行,我也没有得到“AS”之后的语句。
  • 错误是什么?请按 CTRL + C。AS 只是意味着您不要输入类似 MOVIE.genre 的内容,而是给它另一个昵称 m,这样您就可以执行类似 m.genre 的操作。它通常用于缩短语句并最大程度地减少拼写错误的机会。
  • 我只想跳进去说这里的 AS 是可选的。 @Mani,当您在问题的查询中说 FROM movie m 时,它正在做同样的事情。
  • 错误是:第 1 行的错误:ORA-00933:如果我从 MOVIE m 中选择 m.genre,SQL 命令未正确结束
  • 我不确定我的问题是否有意义。我想在该类型的所有电影中选择最长的长度。
【解决方案3】:
SELECT m.genre, m.movie_title, m.release_year, m.movie_length 
FROM MOVIE as m order by m.movie_length desc limit 0,1;

通过DESC添加订单后,限制仅获得1条记录。 0 表示从 0 索引开始,1 定义记录数。

【讨论】:

  • 我不确定这将如何实现在每种类型中获得最长的电影长度。我尝试执行查询,但没有执行。如果你能解释一下。
  • 对不起,我忘记为 orderby 添加列。请重试更新后的查询。
  • 来自电影 m。他错过了这一点以及 ORDER BY .
  • 没问题@NituDhaka :)
猜你喜欢
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2015-02-03
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多