SQL練習
コマンドプロンプトからpsqlの場合。(通常はpgAdminⅢが便利)
ログイン
cd C:\PostgreSQL\8.1\bin
C:\PostgreSQL\8.1\bin>psql -U postgres shop
Password for user postgres:
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
並べ替える
顧客マスタから顧客の名前とフリガナを50音順に並び替える
shop=# SELECT
shop-# 名前
shop-# , フリガナ
shop-# FROM
shop-# 顧客マスタ
shop-# ORDER BY フリガナ ASC
shop-# ;
名前 | フリガナ
- -
川口 | カワグチ
宮本 | ミヤモト
中澤 | ナカザワ
中田 | ナカタ
中村 | ナカムラ
柳沢 | ヤナギサワ
高原 | タカハラ
玉田 | タマダ
(8 rows)
あれ、昇順に並んでないぞ・・・
shop=# SELECT
shop-# 名前, フリガナ
shop-# FROM
shop-# 顧客マスタ
shop-# ORDER BY フリガナ DESC
shop-# ;
名前 | フリガナ
- -
高原 | タカハラ
中澤 | ナカザワ
中田 | ナカタ
中村 | ナカムラ
柳沢 | ヤナギサワ
玉田 | タマダ
宮本 | ミヤモト
川口 | カワグチ
(8 rows)
降順も変だ・・・
レコード件数を求める
商品マスタの件数をカウントする
shop=# SELECT
shop-# COUNT(*)
shop-# FROM
shop-# 商品マスタ
shop-# ;
count
- -
12
(1 row)
平均値と合計値を求める
受注金額の平均値と合計値を算出する
shop=# SELECT
shop-# AVG(受注合計)
shop-# , SUM(受注合計)
shop-# FROM
shop-# 受注データ
shop-# ;
avg | sum
- -
14010.000000000000 | 140100
(1 row)
なんだかavgは表示される桁数が多いなぁ。
pgAdminのクエリーツールで実行すると、avg(numeric) sum(int8)とタイトルに表示されているから、型が違うのが原因らしいが、どうやったら統一できるのかな。
最大値と最小値を求める
受注金額の最大値と最小値を求める
shop=# SELECT
shop-# MAX(受注合計)
shop-# , MIN(受注合計)
shop-# FROM
shop-# 受注データ
shop-# ;
max | min
- -
30000 | 1500
(1 row)
グループ毎に集計する
商品マスタからグループ名ごとに商品件数と在庫件数を求める
shop=# SELECT
shop-# グループ名
shop-# , COUNT(*)
shop-# , SUM(在庫数)
shop-# FROM
shop-# 商品マスタ
shop-# GROUP BY
shop-# グループ名
shop-# ;
グループ名 | count | sum
- -
サポーターズウェア | 2 | 30
ボール | 3 | 21
レプリカグッズ | 2 | 7
サポーターズグッズ | 5 | 72
(4 rows)
GROUP BYによる並び方*1がおかしい・・・
*1:ORDER BY しなければ昇順・降順に並ぶわけありませんね(..;