プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

SQL 練習問題その3


スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より

あるカフェの注文状況を記録しているテーブル
f:id:tos5511:20160129005110p:plain

f:id:tos5511:20160129005144p:plain

1.注文順かつその明細準に、すべての注文データを取得する

SELECT *
 FROM 注文履歴
 ORDER BY 注文番号, 注文枝番

2.2013年1月に注文のあった商品名の一覧を商品名順に取得する

SELECT DISTINCT 商品名 FROM 注文履歴
 WHERE 日付 >= '2013-01-01' AND 日付 <= '2013-01-31'
 ORDER BY 商品名 

3.ドリンクの商品について、単価の低い順から商品名と単価を3つ取得する。

SELECT 商品名, 単価 FROM 注文履歴
 WHERE 分類 = '1'
 ORDER BY 単価 LIMIT 3

4.フードの商品について、2番目に単価の高い商品名と単価を取得する。

SELECT 商品名, 単価 FROM 注文履歴
 WHERE 分類 = '2'
 ORDER BY 単価 DESC LIMIT 1 OFFSET 1

5.その他の商品について、2つ以上同時に購入された商品を取得し、
 日付、商品名、単価、数量、注文金額を購入日順に表示する。
 ただし、同日に売り上げたものは数量の多い順に表示する。

SELECT 日付, 商品名, 単価, 数量, 注文金額 FROM 注文履歴
 WHERE 分類 = '3' AND 数量 >= 2
 ORDER BY 日付, 数量 DESC

6.商品の分類毎に分類、商品名、サイズ、単価を1つの表として取得する。
また、サイズはドリンクの商品についてのみ表示し、分類と商品名順
に並べる事。

SELECT DISTINCT 分類, 商品名, サイズ, 単価
  FROM 注文履歴 WHERE 分類 = '1'
UNION
SELECT DISTINCT 分類, 商品名, NULL, 単価
  FROM 注文履歴 WHERE 分類 = '2'
UNION
SELECT DISTINCT 分類, 商品名, NULL, 単価
  FROM 注文履歴 WHERE 分類 = '3'
 ORDER BY 1, 2