始める無料で始める

売上を牽引するアルバム

今日はディレクターがあなたのデスクに来て、近日実施予定の「Greatest Hits」アルバムのホリデープロモーションに関する内部情報を共有してくれました。最適なアルバムを割引対象にするために、どの「Greatest Hits」アルバムが最も売上に貢献しているのかを知りたいとのことです。これを明らかにするために、これまで学んだスキルを総動員して取り組みましょう!

この演習はコースの一部です

Snowflake でのデータ操作

コースを見る

演習の手順

  • album_map という名前のCTEを定義します。
  • アルバムのタイトルに greatest が含まれていれば TRUE、それ以外は FALSE を返す CASE 文を作成し、is_greatest_hits というエイリアスを付けます。
  • trimmed_invoicelines CTE を更新し、invoice_idtrack_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;
コードを編集して実行