題組內容
二、假設現有如下點歌紀錄的關聯式資料庫,請使用 SQL 回答相關的子問題。(每小題 5 分,共 20 分) Publisher(nation, company_ ID, name) PK: nation+company_ID
Song(song _ ID, name, language, type, publish_year, nation, publisher_ID)
PK: song_ID
FK: nation+publisher_ID ref. Publisher(nation+company_ID)
Member(mobile, nickname, gender) PK: mobile
OnDemand_Record(member_ ID, song _ ID, date_time)
PK: (member_ID, song_ID, date_time)
FK: member_ID ref. Member(mobile)
FK: song_ID ref. Song(song_ID)
註:欄位名稱如相同或顯示非欄位名稱,請使用 Alias 重新命名顯示的欄位
(二)請列出 "Universal" 所發行歌曲,2023 年第四季到 2024 年第三季間, 點播歌曲名、歌曲類型、發行年份,結果只顯示同一發行年份點播歌曲 數>1 的歌曲,同時依發行年份,由近至遠排列。
詳解 (共 1 筆)
詳解
SELECT
S.name AS 歌曲名,
S.type AS 類別,
S.publish_year AS 發行年份,
COUNT(*) AS 點播次數
FROM
OnDemand_Record ODR
JOIN
Song S ON ODR.song_ID = S.song_ID
JOIN
Publisher P ON S.nation = P.nation AND S.publisher_ID = P.company_ID
WHERE
P.name = 'Universal'
AND ODR.date_time BETWEEN '2023-10-01' AND '2024-09-30'
GROUP BY
S.song_ID, S.name, S.type, S.publish_year
HAVING
COUNT(*) > 1
ORDER BY
S.publish_year DESC;
S.name AS 歌曲名,
S.type AS 類別,
S.publish_year AS 發行年份,
COUNT(*) AS 點播次數
FROM
OnDemand_Record ODR
JOIN
Song S ON ODR.song_ID = S.song_ID
JOIN
Publisher P ON S.nation = P.nation AND S.publisher_ID = P.company_ID
WHERE
P.name = 'Universal'
AND ODR.date_time BETWEEN '2023-10-01' AND '2024-09-30'
GROUP BY
S.song_ID, S.name, S.type, S.publish_year
HAVING
COUNT(*) > 1
ORDER BY
S.publish_year DESC;