0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL学習④]DISTINCT・ORDER BY・OFFSET・FETCH

Last updated at Posted at 2021-11-13

①DISTINCTで重複行を除外

スクリーンショット 2021-11-13 21.03.37.png

スクリーンショット 2021-11-13 21.05.27.png
登録店舗で抽出。さらに、重複行はまとめます。

SELECT DISTINCT 登録店舗
FROM 会員登録

DISTINCTをつけることにより重複行は削除できます。

②並び替え

![スクリーンショット 2021-11-13 21.08.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/0da2a072-8e4f-bcac-bcf9-73a48d87b3fd.png)

日付の降順(新しい順)になるように並べ替えます

SELECT * FROM 会員登録
ORDER BY 日付 DESC

昇順はASC

③複数行での並び替え

![スクリーンショット 2021-11-13 21.12.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/0d3c0c96-f343-84a2-b351-500d839a5918.png)

数学を降順、国語を降順で並び変える場合、以下の2パターンで並び替え可能

SELECT * FROM 成績表
ORDER BY 数学 DESC, 国語 DESC

SELECT * FROM 成績表
ORDER BU 3 DESC,4 DESC

④取得行の指定

先ほどの成績表を使用し、数学の点数の高い順に名前と数学の点数を「2件」取得してみます。
SELECT 名前,数学 FROM 成績表
ORDER BY 数学 DESC
OFFSET 0 ROWS
FETCH NEXT 2 ROWS ONLY

OFFSETには除外したい行数、FETCH NEXT ? ROWS ONLYには所得したい行数を記載します。
FETCHを使い、2番目に数学の点数の高い、名前と数学の点数を表示します。

SELECT 名前,数学 FROM 成績表
ORDER BY 数学 DESC
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY

①〜④までのまとめ

ハンバーガーショップの注文履歴テーブルが以下のようにあります。
スクリーンショット 2021-11-13 21.36.42.png

①注文順かつ枝番順に全ての注文データを取得します。

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

②2021年4月に注文のあった商品名一覧を商品名順に取得します。

SELECT DISTINCT 商品名 FROM 注文履歴
WHERE 日付 >='2021/04/01' AND 日付 <='2021/04/30'
ORDER BY 商品名

③「ポテト」の商品を対象に注文金額の低い方から2〜4番目の注文の注文番号と枝番、金額を取得する。

SELECT 注文番号,注文枝番,注文金額 FROM 注文履歴
WHERE 分類='ポテト' ORDER BY 注文金額
OFFSET 1 ROWS
FETCH NEXT 3 ROWS ONLY
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?