PostgreSQL条件计数求助:统计影片租赁次数的查询改写
按影片ID统计租赁次数的SQL解决方案
最终查询语句
直接使用GROUP BY分组和COUNT()聚合函数就能实现需求,修改后的SQL如下:
SELECT i.film_id, COUNT(r.rental_id) AS "COUNT of rental_id" FROM rental AS r INNER JOIN inventory AS i ON i.inventory_id = r.inventory_id GROUP BY i.film_id ORDER BY i.film_id;
关键逻辑说明
GROUP BY i.film_id:将数据按影片ID分组,保证每一行对应唯一一部影片COUNT(r.rental_id):统计每组内租赁ID的总数,也就是该影片的租赁次数AS "COUNT of rental_id":给统计列设置你需要的别名,PostgreSQL中带空格的别名必须用双引号包裹
关于之前尝试的说明
PostgreSQL中不存在Excel里的COUNTIF函数,你的场景不需要CASE语句,直接分组统计是最简洁的方案。如果硬要用CASE,写法会是COUNT(CASE WHEN r.rental_id IS NOT NULL THEN r.rental_id END),但完全没必要,COUNT()本身就会忽略NULL值,直接统计非空的租赁ID数量即可。
内容的提问来源于stack exchange,提问作者Student_OKIE
相关产品推荐
相关产品推荐

