ログイン
問題24

UNION演算子を使って和集合を求めよう

類似した構造のテーブルが複数あった場合に、その結果を組み合わせて表示したい場合は、集合演算子というものを使用します。 集合演算子にはUNION、EXCEPT、INTERSECTなどがあります。

アイコン画像

問題24:UNION演算子を使って和集合を求めよう

はじめに指定のコードを実行して「家計簿_過去分」テーブルを作成してください。

UNION演算子を使用して「家計簿」テーブルと「家計簿_過去分」テーブルを組み合わせて
費目の食費のみを表示してください。
重複するデータは1行にまとめずに全て表示してください。

期待する画面を参考に作成してみましょう。

エディターのアイコンあらかじめエディタに書くコード

                USE ninjacode;
CREATE TABLE 家計簿_過去分 (日付 INT, 費目 VARCHAR(20), 収入 INT, 支出 INT, 詳細 VARCHAR(255));
INSERT INTO 家計簿_過去分
  (日付, 費目, 収入, 支出, 詳細) 
VALUES
  (20221105, '家賃', 0, 80000, '9月の家賃'),
  (20221105, '光熱費', 0, 15000, '9月の電気代'),
  (20221108, '食費', 0, 1000, 'ランチ'),
  (20221115, '食費', 0, 1400, 'ランチ'),
  (20221120, '交際費', 0, 25000, '友人と温泉旅行'),
  (20221122, '娯楽費', 0, 1400, '書籍購入'),
  (20221125, '給料', 250000, 0, '10月分');
SELECT * FROM 家計簿_過去分;
¥SQL¥
              

ブラウザのアイコン期待する画面

解答の見本画像

タグアイコン解答ソースコード

              SELECT 費目, 収入, 支出 FROM 家計簿 WHERE 費目 = '食費'
  UNION ALL
SELECT 費目, 収入, 支出 FROM 家計簿_過去分 WHERE 費目 = '食費';
¥SQL¥
            

コメントのアイコン解説

UNIONを使用する際の構文は以下のようになります。
SELECT 列名 FROM テーブル名①
UNION
SELECT 列名 FROM テーブル名②

今回の問題では、両テーブルの費目'食費'を合わせて表示します。
UNION演算子を使用することで組み合わせて表示できます。
重複するデータをまとめず全て表示させる場合は
UNION演算子に続けて'ALL'を記述します。
ログインして解答を見る

コメントのアイコン補足

集合演算は、複数の検索結果を1つの結果表として返してくれますが、それぞれの検索結果の列数が異なったりデータ型がバラバラであると1つの結果表にまとめることができません。組み合わせる際は列数・データ型を一致させておく必要があります。
SQLを学ぶなら現役エンジニア監修「甲賀コース」
キャンペーン

閉じる