このテストは、SQL ServerにおけるSQLの基本的な知識から応用的なスキルまでを測定することを目的としています。
注: 各問題の解答は、SQL Serverの構文に基づいて記述してください。
以下のテーブル定義をもとに、各問題に解答してください。
Employees
(従業員情報)CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, Department NVARCHAR(50), Salary DECIMAL(10, 2), HireDate DATE, Enabled BIT DEFAULT 1, -- 有効/無効フラグ InsertDate DATETIME DEFAULT GETDATE(), -- 登録日時 UpdateDate DATETIME DEFAULT GETDATE(), -- 更新日時 DeleteDate DATETIME, -- 削除日時 UpdateUser NVARCHAR(50) -- 更新ユーザー );
Products
(商品情報)CREATE TABLE Products ( ProductID INT PRIMARY KEY IDENTITY(1,1), ProductName NVARCHAR(100) NOT NULL, Price DECIMAL(10, 2) NOT NULL, StockQuantity INT, Enabled BIT DEFAULT 1, InsertDate DATETIME DEFAULT GETDATE(), UpdateDate DATETIME DEFAULT GETDATE(), DeleteDate DATETIME, UpdateUser NVARCHAR(50) );
Employees
テーブルに、以下の情報を新規登録するSQL文を記述してください。解答欄:
Employees
テーブルから、全ての従業員のFirstName
とLastName
を取得するSQL文を記述してください。
解答欄:
Employees
テーブルで、Department
が'開発部'の従業員のSalary
を70000.00に更新するSQL文を記述してください。(UpdateUser
も適切に設定してください)
解答欄:
Products
テーブルから、Price
が5000以上の商品のProductName
とPrice
を取得するSQL文を記述してください。
解答欄:
Employees
テーブルから、EmployeeID
が3の従業員を論理削除するSQL文を記述してください。(Enabled
を0に更新し、DeleteDate
とUpdateUser
も適切に設定してください)
解答欄:
Products
テーブルに、以下の情報を持つ商品を複数件一括で登録するSQL文を記述してください。解答欄:
以下のテーブル定義をもとに、各問題に解答してください。
Orders
(注文情報)CREATE TABLE Orders ( OrderID INT PRIMARY KEY IDENTITY(1,1), EmployeeID INT NOT NULL, OrderDate DATE, TotalAmount DECIMAL(10, 2), Enabled BIT DEFAULT 1, InsertDate DATETIME DEFAULT GETDATE(), UpdateDate DATETIME DEFAULT GETDATE(), DeleteDate DATETIME, UpdateUser NVARCHAR(50), FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) );
OrderDetails
(注文詳細)CREATE TABLE OrderDetails ( OrderDetailID INT PRIMARY KEY IDENTITY(1,1), OrderID INT NOT NULL, ProductID INT NOT NULL, Quantity INT, UnitPrice DECIMAL(10, 2), Enabled BIT DEFAULT 1, InsertDate DATETIME DEFAULT GETDATE(), UpdateDate DATETIME DEFAULT GETDATE(), DeleteDate DATETIME, UpdateUser NVARCHAR(50), FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) );
Employees
テーブルと Orders
テーブルを結合し、各従業員のFirstName
, LastName
と、その従業員が行った注文のOrderID
, OrderDate
を全て取得するSQL文を記述してください。注文がない従業員も表示されるようにしてください。
解答欄:
Department
)ごとの従業員の平均給与(Salary
)を計算するSQL文を記述してください。
解答欄:
Orders
テーブルと OrderDetails
テーブルを結合し、各注文(OrderID
)の総額(Quantity
* UnitPrice
の合計)を計算し、TotalAmount
が10000を超える注文のみを抽出するSQL文を記述してください。
解答欄:
Products
テーブルから、在庫数量(StockQuantity
)が最も少ない商品名(ProductName
)を取得するSQL文を記述してください。(複数の商品が同じ最小在庫の場合も考慮してください)
解答欄:
Employees
テーブルに存在するが、Orders
テーブルに一度も注文を登録していない従業員のFirstName
とLastName
を取得するSQL文を記述してください。
解答欄:
OrderDetails
のQuantity
の合計)を計算し、販売数が多い順に商品名(ProductName
)と合計販売数を表示するSQL文を記述してください。販売実績がない商品も表示し、その場合は合計販売数を0としてください。
解答欄:
Employees
テーブルで、給与(Salary
)が部署内(Department
)の平均給与より高い従業員のFirstName
, LastName
, Department
, Salary
、およびその部署の平均給与を取得するSQL文を記述してください。
解答欄:
Products
テーブルから、価格(Price
)が全体の平均価格よりも高い商品名(ProductName
)と価格を取得するSQL文を記述してください。
解答欄: