sql - 如何在您选择的 SQL 子句中使用聚合函数?
问题描述
抱歉标题乱七八糟。
我有一个数据库,其中包含不同的电影标题以及每部电影所属的每种类型。我想选择“短片”类型的电影,其电影长度大于所有类型电影的平均长度。
流派表示为 1 表示是或 0 表示否。到目前为止,这是我的选择语句:
SELECT MovieTitle, MovieLength
FROM MOVIES
WHERE GenreShort = 1
HAVING MovieLength > AVG(MovieLength)
我将如何将电影长度与所有电影的平均值进行比较,而不仅仅是“短”类型电影?
解决方案
使用分析函数仅从SELECT
表中提取一次:
SELECT MovieTitle,
MovieLength
FROM (
SELECT MovieTitle,
MovieLength,
AVG(MovieLength) OVER () AS average_movielength
FROM MOVIES
WHERE GenreShort = 1
)
WHERE movielength > average_movielength;
如果要从表中选择两次,则:
SELECT MovieTitle,
MovieLength
FROM MOVIES
WHERE GenreShort = 1
AND MovieLength > (SELECT AVG(MovieLength) FROM MOVIES);
db<>在这里摆弄
推荐阅读
- excel - 计算大于 X 的值的总时间
- javascript - async.forEachSeries 后跟 array.forEach
- xcode-instruments - 错误:在 xcode 时间分析器仪器上分析 iOS 应用程序时无法在设备上找到设备的时间戳
- phalcon - Phalconn Dispatcher 和 Loader registerNamespaces
- java - 评估(细胞)与评估InCell(细胞)poi库中的差异?
- selenium - 我无法单击 Selenium 中的菜单列表选项。
- javascript - 如何让这个视频在图像中显示/播放?
- .net - 角度服务未按相同顺序执行
- android - 线性布局上的圆角
- exception-handling - 在 apache camel 中引发未处理的异常之前记录