2017-03-17 30 views
0

私は「どの都市が最も多くの映画を見ているのか(賃貸された映画の数に基づいて)」という質問に苦しんでいます。SQLグループごとに各顧客の合計行数をカウントする方法は?

私はこれを、MySQLのSeikilaサンプルデータベースを使用して行います。都市エンティティはレンタルおよび顧客エンティティとは関係がありませんが、住所エンティティには、顧客エンティティにid依存する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を追加する必要があることを実現

をするので、私の質問は次のようになります。

方法の数をカウントします私はのレンタルされた総数を都市ごとにでグループ化しています。

+1

'COUNT(*)'と 'GROUP BY'を使用してください。あなたは質問のタイトルにそれを書いていました。 – Barmar

+0

私はそれがcount()を使用していることを知っていますが、顧客の総数ではなく、それぞれのcustomer_idを別々に数えたいと思います。 –

+0

都市の賃貸人数だけでなく、 – Barmar

答えて

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 

あなたもその都市の顧客の数を知りたい場合は、SELECTリストにCOUNT(DISTINCT cust.customer_id)を追加することができます。

+0

私はそれを手に入れました。ありがとう –

関連する問題