2023年8月17日 星期四

8/17 每日一題(MYSQL 找出演員和導演配合3次以上)

 Table: ActorDirector

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| actor_id    | int     |
| director_id | int     |
| timestamp   | int     |
+-------------+---------+
timestamp is the primary key (column with unique values) for this table.

 

Write a solution to find all the pairs (actor_id, director_id) where the actor has cooperated with the director at least three times.

Return the result table in any order.

The result format is in the following example.

 

Example 1:

Input: 
ActorDirector table:
+-------------+-------------+-------------+
| actor_id    | director_id | timestamp   |
+-------------+-------------+-------------+
| 1           | 1           | 0           |
| 1           | 1           | 1           |
| 1           | 1           | 2           |
| 1           | 2           | 3           |
| 1           | 2           | 4           |
| 2           | 1           | 5           |
| 2           | 1           | 6           |
+-------------+-------------+-------------+
Output: 
+-------------+-------------+
| actor_id    | director_id |
+-------------+-------------+
| 1           | 1           |
+-------------+-------------+
Explanation: The only pair is (1, 1) where they cooperated exactly 3 times.


# Write your MySQL query statement below
SELECT actor_id ,director_id
FROM ActorDirector
GROUP BY actor_id , director_id
HAVING COUNT(*) >= 3

#使用GROUP BY 將 actor_id 和 director_id 進行分組
#然後使用聚合函式(HAVING) 計算record出現3次以上的組合

-------------------參考解答

# Write your MySQL query statement below
select actor_id, director_id
from ActorDirector
group by actor_id, director_id
having count(timestamp)>=3

-------------

# Write your MySQL query statement below
select actor_id,director_id from actordirector group by 1,2 having count(director_id)>=3
#GROUP BY 1, 2 使用GROUP BY子句根據第一個和第二個欄位(也就是actor_id, director_id)進行分組,
#將相同的組合放在同組




























標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁