sql - 选择计数数高于平均计数数的每个计数行
问题描述
SELECT id_film, sq1.counter
FROM(
SELECT id_film, COUNT(*) as counter
FROM film_vorstellung
GROUP BY id_film
) as sq1 WHERE sq1.id_film = id_film
查询返回:
id_film | 柜台 |
---|---|
3 | 1 |
5 | 1 |
4 | 1 |
6 | 2 |
2 | 3 |
1 | 1 |
到目前为止,一切都很好。
现在我想得到每一个计数器高于平均计数器值的 id_film .. 我正在尝试这样做几个小时。最常见的语法错误是我无法使用我尝试的平均方法...
解决方案
您可以使用 CTE 和标量查询表达式来执行此操作。几乎用简单的语言,首先计算计数器值id_film
,然后“获取计数器高于平均计数器值的每个 id_film”。
with cntrs as -- your subquery
(
SELECT id_film, COUNT(*) as cntr
FROM film_vorstellung
GROUP BY id_film
)
select id_film, cntr
from cntrs
where cntr > (select avg(cntr) from cntrs);
推荐阅读
- xcode - 使用 NSKeyedArchiver 保存枚举和嵌套数组
- r - 在 R 中读取 .zip 文件时出现问题
- javascript - 在 html 表格的 tbody 中设置滚动时出现问题 - 对齐被破坏
- django - 使用多个数据库时无法使用会话
- laravel - 有什么简单的方法可以从 laravel 控制器中找到功能吗?
- firebase - 使用 Firebase_Arduino_WiFiNINA 从 Arduino 连接到 Firebase 时出错
- kubernetes - 如何避免 K8s 在启动时杀死 pod
- sql-server - 将 SELECT 连接到 SQL Server 中的一列
- excel - 无法填充命名范围
- python-3.x - Python-Time Series 如何获取特定周的预测值