SQL実習#
SQLの書き方を身につけるため、Chinookデータベースを使用し、SQLの総合演習を行う。
SQL文20問#
tracksテーブル#
--- title: tracks entity --- erDiagram tracks { integer TrackId PK nvarchar Name integer AlbumId integer MediaTypeId integer GenreId nvarchar Composer integer Milliseconds numeric UnitPrice }
TrackId
、Name
を取得するSQL文を書け。TrackId
、Name
、AlbumId
を取得し、AlbumId
で昇順に並べ替えるSQL文を書け。TrackId
、Name
、AlbumId
を取得するSQL文を書け。ただし、AlbumId
が1
のものだけを対象とする。TrackId
、Name
、AlbumId
,Milliseconds
を取得するSQL文を書け。ただし、以下の条件を満たすものとする。AlbumId
が1
のものMilliseconds
が200000
以上のもの
Name
、AlbumId
、Composer
を取得するSQL文を書け。ただし、Composer
の名前に"Steve"
が含まれるものだけを対象とする。TrackId
、Name
、MediaTypeId
を取得するSQL文を書け。ただし、MediaTypeId
が1
または2
のものだけを対象とする。(IN
句を使用すること)それぞれの
AlbumId
ごとに、トラックの数をカウントし、AlbumId
、トラック数を取得するSQL文を書け。結果はAlbumId
で昇順に並べ替えること。TrackId
、Name
、GenreId
を取得するSQL文を書け。ただし、GenreId
が1
、2
、3
以外のものだけを対象とする。(NOT IN
句を使用すること)「Wild」で始まるトラック名を持つトラックの
TrackId
、Name
、AlbumId
を取得するSQL文を書け。「Honey」を含むトラック名を持つトラックの
TrackId
、Name
、AlbumId
を取得するSQL文を書け。
invoicesテーブル#
--- title: invoices entity --- erDiagram invoices { integer InvoiceId PK integer CustomerId datetime InvoiceDate nvarchar BillingAddress nvarchar BillingCity nvarchar BillingState nvarchar BillingCountry nvarchar BillingPostalCode numeric Total }
BillingAddress
、BillingCity
を取得するSQL文を書け。ただし、BillingCity
が"Chicago"
または"New York"
のものだけを対象とする。BillingAddress
、BillingCity
,Total
を取得するSQL文を書け。ただし、以下の条件を満たすものとする。BillingCity
が"Chicago"
または"New York"
のものTotal
が10.00
以上のもの
InvoiceId
、BillingAddress
、Total
を取得するSQL文を書け。ただし、Total
が14.00
以上かつ18.00
以下のものだけを対象とする。(Between
句を使用すること)BillingCountry
を取得するSQL文を書け。ただし、重複を除外すること。
tracks, albums, artistsテーブル#
erDiagram tracks { integer TrackId PK nvarchar Name integer AlbumId FK integer MediaTypeId integer GenreId nvarchar Composer integer Milliseconds numeric UnitPrice } albums { integer AlbumId PK nvarchar Title integer ArtistId FK } artists { integer ArtistId PK nvarchar Name } tracks }o--o{ albums : belongs albums }o--|| artists : creats
ArtistId
が1
のアーティストが作ったアルバムのTrackId
、Name
、AlbumId
を取得するSQL文を書け。Hint: 副問合せ、IN
句を使用すること。tracks
とalbums
テーブルを結合し、tracks.TrackId
、tracks.Name
、albums.Title
を取得するSQL文を書け。tracks.TrackId
、tracks.Name
、albums.Title
,artists.Name
を取得するSQL文を書け。(JOIN
句を使用すること)それぞれの
AlbumId
ごとに、トラックの数をカウントし、albums.Title
、トラック数を取得するSQL文を書け。結果はカウント数で昇順に並べ替えること。Hint:JOIN
句とGROUP BY
句を使用すること。上の問題の結果は,トラック数が
15
以上のものだけを対象とするSQL文を書け。Hint:HAVING
句を使用すること。アルバム名が
"Let There Be Rock"
のアルバムに含まれるトラックのTrackId
、Name
、AlbumId
を取得するSQL文を書け。Hint: 副問合せを使用すること。