sql - SQL 有和最大值
问题描述
我的查询:
SELECT P.lastname, P.firstname, MAX(MD.movie_id)
FROM Person AS P
INNER JOIN Movie_Directors AS MD ON P.person_id = MD.person_id
INNER JOIN Movie AS M ON M.movie_id = MD.movie_id
GROUP BY P.firstname, P.lastname, MD.movie_id
HAVING MAX(MD.movie_id);
我收到此错误:
在预期条件的上下文中指定的非布尔类型的表达式,靠近 ';'
我需要为下一个问题获取 SQL 选择,我不明白错误有人可以帮忙吗?
查询需要显示迄今为止制作了最多电影的导演 [firstname, lastname]。
解决方案
ROW_NUMBER 子句可以帮助您。希望我没有任何错别字。此外,如果您有一个 person_id,我建议您使用它而不是分区的名字、姓氏。
WITH MaxMovies AS
(
SELECT P.lastname, P.firstname, ROW_NUMBER OVER (PARTITION BY firstname, lastname ORDER BY movie_id DESC) MOVIE_NUMBER
FROM Person AS P
inner join Movie_Directors AS MD ON P.person_id=MD.person_id
inner join Movie AS M ON M.movie_id=MD.movie_id
GROUP BY P.firstname, P.lastname
)
SELECT * FROM MAXMOVIES WHERE MOVIE_NUMBER=1
参考:https ://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017
推荐阅读
- mysql - 如何将行号分配给我在 MySQL 中查询的表?
- python - countplot 和 pieplot 反转标签颜色
- azure - Azure Function 3.1 + NLog + 结构化日志记录,LoggerName 问题
- r - R - 强制默认绘图函数为散点图
- heroku - heroku 上的诗歌:多次尝试后找不到(任何!)模块
- java - 我可以从右边开始 System.out.print 的结果吗?
- python - 如何创建和输出框以及如何使用它?
- javascript - 如何在选择时在选择器文本值中显示一个值,以不同于下拉列表中可供选择的选项文本?
- tensorflow - 管理分支/纠缠网络的数据集
- android - Android 模拟器的问题不再在 mac os high sirrra 10.13.6 上启动