売上を牽引するアルバム
今日はディレクターがあなたのデスクに来て、近日実施予定の「Greatest Hits」アルバムのホリデープロモーションに関する内部情報を共有してくれました。最適なアルバムを割引対象にするために、どの「Greatest Hits」アルバムが最も売上に貢献しているのかを知りたいとのことです。これを明らかにするために、これまで学んだスキルを総動員して取り組みましょう!
この演習はコースの一部です
Snowflake でのデータ操作
演習の手順
album_mapという名前のCTEを定義します。- アルバムのタイトルに
greatestが含まれていればTRUE、それ以外はFALSEを返すCASE文を作成し、is_greatest_hitsというエイリアスを付けます。 trimmed_invoicelinesCTE を更新し、invoice_idとtrack_idでそれぞれinvoicelinesに対してinvoiceテーブルとtracksテーブルをLEFT JOINします。- サブクエリを使って、「Greatest Hits」アルバムのみを返します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Define an album_map CTE to combine albums and artists
___ (
SELECT
album.album_id, album.title AS album_name, artist.name AS artist_name,
-- Determine if an album is a "Greatest Hits" album
___
___ album_name ILIKE '%greatest%' ___ TRUE
ELSE FALSE
___ AS ___
FROM store.album
JOIN store.artist ON album.artist_id = artist.artist_id
), trimmed_invoicelines (
SELECT
invoiceline.invoice_id, track.album_id, invoice.total
FROM store.invoiceline
LEFT JOIN store.invoice ON invoiceline.invoice_id = invoice.invoice_id
LEFT JOIN store.track ON invoiceline.track_id = track.track_id
)
SELECT
album_map.album_name,
album_map.artist_name,
SUM(ti.total) AS total_sales_driven
FROM trimmed_invoicelines AS ti
JOIN album_map ON ti.album_id = album_map.album_id
-- Use a subquery to only "Greatest Hits" records
___ ti.___ ___ (SELECT album_id FROM album_map WHERE is_greatest_hits)
GROUP BY album_map.album_name, album_map.artist_name, is_greatest_hits
ORDER BY total_sales_driven DESC;