
[英]How to compare a number with count result then use it in limit statement in redshift/sql
[英]In SQL how to count the number of result?
我有以下 SQL DB:
DB名称: films
DB fields: id, title, release_year, country, duration, language, certification, gross, budget
我正在尝试解决以下问题:计算 200 多部电影在不同年份发行了多少?
我尝试运行以下 SQL 查询:
SELECT release_year
FROM films
GROUP BY release_year
HAVING COUNT(release_year) > 200;
但是我得到了 2000 年之后发布的年份。(总共有 13 个结果)当尝试使用SELECT count(release_year)
我没有得到13
(我每年都在计数)
那么如何计算结果总数?
如果您的数据库支持分析功能,则是一种解决问题的优雅方式:
SELECT TOP 1 COUNT(*) OVER() AS num_movies
FROM films
GROUP BY release_year
HAVING COUNT(*) > 200;
以上适用于 SQL Server,在 MySQL 8+ 和 Postgres 上使用:
SELECT COUNT(*) OVER() AS num_movies
FROM films
GROUP BY release_year
HAVING COUNT(*) > 200
LIMIT 1;
我喜欢使用WITH
语句作为
WITH atable AS (SELECT release_year, COUNT(*)
FROM films
GROUP BY release_year
HAVING COUNT(release_year) > 200)
SELECT COUNT(*)
FROM atable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.