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