SQL如何计算每个客户的总行数?

时间:2017-03-17 02:29:12

标签: mysql sql

我正在努力解决一个问题:#34;哪个城市的客户观看的电影数量最多? (根据租借的电影数量而定)"。

我使用MySQL中的Seikila示例数据库进行此操作。城市实体与租赁和客户实体没有关系,但是地址实体包含address_id,其依赖于客户实体。然后,地址实体具有城市实体也拥有的名为city_id的属性。 customer_id属性链接了客户和租赁实体。

另外,我必须计算每个城市每个客户租用的电影总数。

我只完成了连接部分(代码更新):

select rental_id,cust.customer_id,city.city_id,city.city from rental as r  
inner join customer as cust on r.customer_id=cust.customer_id inner join
address as a on cust.address_id=a.address_id inner join city as city on
city.city_id=a.city_id 

我意识到我应该将city_id添加到表中,所以我的问题是:

如何计算唯一customer_id的行数,以便我可以获得每个城市的电影总数,以及一组by?

1 个答案:

答案 0 :(得分:0)

使用COUNT(*)获取电影租借总数,并按城市分组。

SELECT city.city, COUNT(*) AS total_rentals
FROM rental AS r
INNER JOIN customer AS cust on r.customer_id = cust.customer_id
INNER JOIN address AS a on cust.address_id = a.address_id
INNER JOIN city ON city.city_id = a.city_id
GROUP BY city.city_id
ORDER BY total_rentals DESC
LIMIT 1

如果您还想知道该城市的客户数量,可以将COUNT(DISTINCT cust.customer_id)添加到SELECT列表中。