sql - PostgresSQL 'WHERE' 应该在哪里聚合?
问题描述
以下 postgres 查询有效:
dvdrental=# SELECT title, COUNT(title) AS c FROM film
JOIN inventory
ON film.film_id = inventory.film_id GROUP BY film.title LIMIT 5;
title | c
------------------+---
Academy Dinosaur | 8
Ace Goldfinger | 3
Adaptation Holes | 4
Affair Prejudice | 7
African Egg | 3
(5 rows)
Time: 1.671 ms
然后,如果我想限制说,以免库存中具有特定数量的电影或计算库存中有多少电影具有特定数量,那么起点是:
dvdrental=# SELECT title, COUNT(title) AS c FROM film
JOIN inventory
ON film.film_id = inventory.film_id GROUP BY film.title WHERE c = 4;
ERROR: syntax error at or near "WHERE"
LINE 3: ...m.film_id = inventory.film_id GROUP BY film.title WHERE c = ...
^
Time: 0.337 ms
..但它不起作用。
我已经尝试了WHERE c = 4
这里所有可能的位置,但它不起作用。有一种感觉,如果它是 MySQL 而不是 PostgresSQL,它会起作用。
有谁知道如何修理它?
解决方案
它会having
代替where
SELECT title, COUNT(title) AS c FROM film
JOIN inventory
ON film.film_id = inventory.film_id
GROUP BY film.title
having COUNT(title)=4
HAVING
用于聚合函数 的子句
推荐阅读
- python - 当用户上传图片时,只接收来自 Telegram 机器人的“文本”
- python - IBM Cloud db2 django 迁移 python manage.py migrate
- javascript - 带有嵌套对象的 TextField onChange
- server - 我可以将“Hello World”发送到另一个 IP 的端口吗?
- vb.net - Visual Studio 2019(Visual Basic) 中的 For 循环没有按照我的预期做
- python - Python:如何最有效地矢量化这个 for 循环(使用 pandas groupby)
- swiftui - 使用对象数组会在 ContentView 中给出看似不正确的索引越界错误
- tensorflow - 无法减少语义分割(UNET)的损失,平均 IOU 也没有改善
- asp.net-mvc - 我如何检查是否在 asp.net 中单击了按钮
- android - 当我们需要在整个 Android 应用程序中使用它时,仅在一个活动中加载本机库是否足够?