erDiagram
tracks {
integer TrackId PK
nvarchar Name
integer AlbumId
integer MediaTypeId
integer GenreId
nvarchar Composer
integer Milliseconds
numeric UnitPrice
}
23 SQL実習
SQLの書き方を身につけるため、Chinookデータベースを使用し、SQLの総合演習を行う。
23.1 SQL文20問
23.1.1 tracksテーブル
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文を書け。
23.1.2 invoicesテーブル
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文を書け。ただし、重複を除外すること。
23.1.3 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: 副問合せを使用すること。