集める・数える

INPUT · スライド

値の種類だけを見る

01 / 05

この章で使う表

ここからは手づくり市の売り上げ記録を使うよ。テーブル名は sales。1行が「どのお店が、なにを、何個売ったか」の1件だよ。

  • item … 商品の名前
  • stall … 出したお店の名前
  • price … 1個の値段
  • sold … 売れた個数
  • day … 売れた日
  • rating … お客さんの評価

全部で8行。小さい表だけど、ここから傾向を読み取っていくよ。

SELECT * FROM sales;

実行結果

1 | マグカップ | こもれび堂 | 1000 | 3 | 2026-05-02 | 5
2 | 木のスプーン | こもれび堂 | 400 | 9 | 2026-05-02 | 4
3 | 花のブローチ | こもれび堂 | 700 | 6 | 2026-05-03 | 
4 | 布のバッグ | つむぎ雑貨 | 1800 | 4 | 2026-05-02 | 
5 | コースター | つむぎ雑貨 | 600 | 14 | 2026-05-03 | 3
6 | ガラスの小皿 | つむぎ雑貨 | 900 | 6 | 2026-05-03 | 5
7 | 陶器の花びん | ゆらり工房 | 2400 | 2 | 2026-05-02 | 4
8 | 革のしおり | ゆらり工房 | 1200 | 4 | 2026-05-03 | 3

02 / 05

同じ値が何度も出てくる

「どのお店が出ていたんだろう」と思って stall を取り出すと、同じ名前が何度も返ってくる。1行が売り上げ1件だから、たくさん売ったお店ほど何回も出てくるんだ。

知りたいのは値の種類なのに、これでは数えづらいよね。

SELECT stall FROM sales;

実行結果

こもれび堂
こもれび堂
こもれび堂
つむぎ雑貨
つむぎ雑貨
つむぎ雑貨
ゆらり工房
ゆらり工房

03 / 05

`DISTINCT` で重複を消す

SELECTすぐうしろDISTINCT を書くと、同じ値の行はひとつにまとめられる。

読み方は「sales から stall を選ぶ、ただし重複はなしで」。出ていたのは3店だったと一目で分かるようになった。

SELECT DISTINCT stall FROM sales;

実行結果

こもれび堂
つむぎ雑貨
ゆらり工房

04 / 05

2つの列に付けると組み合わせ

列を2つ並べて DISTINCT を付けると、その組み合わせの種類が返る。列ごとに別々にまとめるのではなく、行まるごとを見くらべるんだ。

下の例は「どのお店がどの日に売ったか」の一覧になるよ。

SELECT DISTINCT stall, day  FROM sales;

実行結果

こもれび堂 | 2026-05-02
こもれび堂 | 2026-05-03
つむぎ雑貨 | 2026-05-02
つむぎ雑貨 | 2026-05-03
ゆらり工房 | 2026-05-02
ゆらり工房 | 2026-05-03

05 / 05

空の値もひとつの種類

rating には値が入っていない行があった。DISTINCT はそれもひとつの種類として残す。勝手に消えたりはしないよ。

並び順は ORDER BY で決められる。空の値はいちばん先に来るよ。ここから書いてみよう。

SELECT DISTINCT rating FROM sales  ORDER BY rating;

実行結果

3
4
5