DataBase vol.6

  • テスト
  • レコードを一件追加する。
  • レコードを更新する。

テスト

惨敗でした。以下、問題です。問題の後に正解が並んでいます。

  1. 社員テーブル(Employees)からBMI指数が10.0以上のBMI指数と、社員名を取り出しなさい。
  2. 売上テーブル(Sales)から、2007年度の商品売り上げ個数の合計を社員毎に社員IDと商品売上個数を取り出しなさい。
  3. 顧客テーブル(Customers)から東京23区や、その他区に所在する顧客を都道府県ごとに取り出しなさい。ただし取り出した際の表示は顧客名の降順とする。
  4. 商品テーブル(Products)から商品カテゴリごとに、価格が200円以上の商品の価格合計を求めなさい。ただし、商品名の最後が「ー」や「〜」で終わるものを含めてはいけない。
  5. 社員テーブル(Employees)から年齢の合計を、血液型毎に取り出しなさい。ただし、社員名の二文字目が「ー」である人を含んではいけない。また、社歴が長い人を順に並べ替えなさい。取り出しは社員ID、社員名、メールアドレスの3つとする。
A1.
SELECT
        EmployeeName AS "社員名"
        ,Weight / ((Height/100)*(Height/100)) AS "BMI"
FROM
        Employees
WHERE
        Weight / ((Height/100)*(Height/100)) >= 10
;
A2.
SELECT
        EmployeeID AS "社員ID"
        ,SUM(Quantity) AS "商品売上個数"
FROM
        Sales
WHERE
        SaleDate >= "2007-01-01"
        AND
        SaleDate < "2008-01-01"
GROUP BY
      EmployeeID
;
A3.
SELECT
        CustomerName AS "顧客名"
        ,Address AS "住所"
FROM
        Customers
WHERE
        Address LIKE "%区%"
GROUP BY
        PrefecturalID
ORDER BY
        CustomerName DESC
;
A4.
SELECT
        SUM(Price)
FROM
        Products
WHERE
        ProductName NOT LIKE '%ー'
        OR
        ProductName NOT LIKE '%〜'
GROUP BY
        CategoryID
HAVING
        SUM(Price) >=200
;
A5.
SELECT
        SUM(2009-HireFiscalYear)
FROM
        Employees
WHERE
        EmployeeName NOT LIKE "_-%"
GROUP BY
        BloodType
ORDER BY
        SUM(2009-HireFiscalYear) DESC
;

レコードを一件追加する。

INSERT
INTO テーブル名
(列名)
VALUES
(値)
;
  • 文字は'で囲むこと。

問題1-3

テーブルSalesにデータを追加しなさい。

SaleID 1006 ProductID 40
Quantity 10 EmployeeID 31
CustomerID 1 SaleDate 2007-09-10
INSERT
INTO Sales
(SaleID ,ProductID ,Quantity ,EmployeeID ,CustomerID ,SaleDate)
VALUES
(1006 ,40 ,10 ,31 ,1 ,'2007-09-10')
;

レコードを更新する

UPDATE
        テーブル名
SET
        列名 = 値
;
問題3-1

テーブルEmployeesのEmailを***@nekoyasudoから***@nekoyasudo.co.jpに変更しなさい。

UPDATE
        Employees
SET
        Email = CONCAT(Email,'.co.jp')
;