MySQL 8.0.40中查询Sakila库租赁量最高日期及对应数量
解决MySQL中获取最高租赁量日期及数值的方法
方法1:使用窗口函数(MySQL 8.0+支持,推荐)
先按日期分组统计每日租赁记录数,再通过RANK()窗口函数标记出租赁量最高的记录,最后筛选排名第一的结果:
SELECT rental_date, daily_rentals FROM ( SELECT DATE(rental.rental_date) AS rental_date, COUNT(*) AS daily_rentals, RANK() OVER(ORDER BY COUNT(*) DESC) AS rnk FROM rental GROUP BY DATE(rental.rental_date) ) AS daily_stats WHERE rnk = 1;
如果存在多个日期租赁量并列最高的情况,RANK()会返回所有并列的记录;如果只需要返回一条,可替换成ROW_NUMBER()。
方法2:使用子查询关联
先计算出所有日期中的最大租赁量,再关联每日统计结果找到对应日期:
SELECT DATE(rental.rental_date) AS rental_date, COUNT(*) AS daily_rentals FROM rental GROUP BY DATE(rental.rental_date) HAVING COUNT(*) = ( SELECT MAX(daily_count) FROM ( SELECT COUNT(*) AS daily_count FROM rental GROUP BY DATE(rental_date) ) AS max_stats );
这个写法也能返回所有租赁量并列最高的日期。
内容的提问来源于stack exchange,提问作者MarkS
相关产品推荐
相关产品推荐

