プログラミング(PostgreSQL)に関するスキルチェックテスト

このテストは、PostgreSQLに関する基礎知識を持っていることが求められるエンジニア向けのテストです。新規採用者や、PostgreSQLを使用するプロジェクトにアサインされる予定のエンジニア、もしくは既存のエンジニアのスキル確認を目的としています。テストを通じて、データベースの操作や管理に関する基本的なスキルを有しているかどうかを評価します。

このテストは、PostgreSQLの基礎知識を評価するために設計されたもので、PostgreSQLエンジニアやそれを目指すエンジニアをターゲットにしています。対象者は、新規採用者やプロジェクトに参加する前のエンジニア、さらには既存のエンジニアが想定されています。

出題される問題は、PostgreSQLの基本的な操作、データベース設計、SQLクエリ、インデックスやトランザクション管理、バックアップやリカバリ手法など、実務に必要な知識をカバーしています。これらの問題により、受験者がPostgreSQLの基本的な機能を理解しているか、またその知識をどの程度実務に活用できるかを評価します。

このテストを通して、受験者の以下の特徴が理解できると期待されます:

PostgreSQLの基本的な操作をどれだけ理解しているか。
SQLクエリやデータベース管理の基本知識をどの程度持っているか。
実際の業務で発生する可能性がある問題にどのように対処できるか。
このテストは、主に以下のシーンで活用が期待されます:

新規採用者の技術的な適性確認。
社内エンジニアのスキル評価やトレーニングの効果測定。
プロジェクトに必要なスキルを持つ人材の確認。

対象職種
プログラマー、学生
問題形式
選択式
問題数
全20問
制限時間
30分
タグ
#プログラミング

テスト問題プレビュー

PostgreSQLのプログラミングに関しての問題です。正しいものを選んでください。

1. 以下のテーブル定義とデータが与えられています。次のSQLクエリの実行結果として正しいものはどれですか。

CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
salary INTEGER
);

INSERT INTO employees (name, department, salary) VALUES
('田中', '営業部', 500000),
('鈴木', '開発部', 600000),
('佐藤', '営業部', 550000),
('山田', '人事部', 480000),
('中村', '開発部', 620000);

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 550000;

2. PostgreSQLにおいて、テーブル内の特定の列または列の組み合わせが、全ての行で一意であることを保証する制約は何ですか。

3. 以下のテーブル定義とデータが与えられています。次のSQLクエリの実行結果として正しいものはどれですか。

CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER,
order_date DATE,
total_amount DECIMAL(10, 2)
);

INSERT INTO orders (customer_id, order_date, total_amount) VALUES
(1, '2023-01-15', 100.00),
(2, '2023-01-20', 150.50),
(1, '2023-02-01', 200.00),
(3, '2023-02-05', 75.25),
(2, '2023-02-10', 300.00);

SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY customer_id
HAVING SUM(total_amount) > 120
ORDER BY total_spent DESC;

4. PostgreSQLで、2つのテーブル間の参照整合性を維持するために使用される制約は何ですか。

5. 以下のテーブル定義とデータが与えられています。次のSQLクエリの実行結果として正しいものはどれですか。

CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
category VARCHAR(50),
price DECIMAL(10, 2)
);

INSERT INTO products (name, category, price) VALUES
('ノートPC', '電子機器', 80000),
('スマートフォン', '電子機器', 60000),
('コーヒーメーカー', '家電', 15000),
('テレビ', '電子機器', 120000),
('掃除機', '家電', 25000);

SELECT category,
COUNT(*) AS product_count,
MAX(price) AS max_price,
MIN(price) AS min_price
FROM products
GROUP BY category
HAVING COUNT(*) > 1;

6. PostgreSQLで、複数のSQL文をグループ化し、データベースの一貫性を保ちながら「全てか無しか」の原則で実行する機能は何ですか。

7. 以下のテーブル定義とデータが与えられています。次のSQLクエリの実行結果として正しいものはどれですか。

CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
manager_id INTEGER
);

INSERT INTO employees (name, department, manager_id) VALUES
('山田', '営業部', NULL),
('鈴木', '営業部', 1),
('佐藤', '開発部', NULL),
('田中', '開発部', 3),
('中村', '人事部', NULL);

WITH RECURSIVE subordinates AS (
SELECT id, name, manager_id
FROM employees
WHERE name = '山田'
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
INNER JOIN subordinates s ON s.id = e.manager_id
)
SELECT name FROM subordinates;

8. PostgreSQLで、データベースの検索パフォーマンスを向上させ、特定の行を迅速に検出・抽出するために使用される構造は何ですか。

9. 以下のテーブル定義とデータが与えられています。次のSQLクエリの実行結果として正しいものはどれですか。

CREATE TABLE sales (
id SERIAL PRIMARY KEY,
product_id INTEGER,
sale_date DATE,
quantity INTEGER
);

INSERT INTO sales (product_id, sale_date, quantity) VALUES
(1, '2023-03-01', 5),
(2, '2023-03-02', 3),
(1, '2023-03-02', 2),
(3, '2023-03-03', 4),
(2, '2023-03-03', 1),
(1, '2023-03-04', 3);

SELECT product_id,
SUM(quantity) OVER (PARTITION BY product_id ORDER BY sale_date) AS running_total
FROM sales
ORDER BY product_id, sale_date;CREATE TABLE sales (
id SERIAL PRIMARY KEY,
product_id INTEGER,
sale_date DATE,
quantity INTEGER
);

INSERT INTO sales (product_id, sale_date, quantity) VALUES
(1, '2023-03-01', 5),
(2, '2023-03-02', 3),
(1, '2023-03-02', 2),
(3, '2023-03-03', 4),
(2, '2023-03-03', 1),
(1, '2023-03-04', 3);

SELECT product_id,
SUM(quantity) OVER (PARTITION BY product_id ORDER BY sale_date) AS running_total
FROM sales
ORDER BY product_id, sale_date;

10. PostgreSQLで、大規模なテーブルを論理的に一つの大きなテーブルとして扱いながら、物理的により小さな部分に分割する機能は何ですか。

無料登録をすると、
この問題を無料でご利用いただけます!

プライバシーポリシー利用規約にご同意の上送信してください

ラクテス無料登録

問題作成者紹介

ラクテス編集部

ラクテスはクラウド上で簡単にテスト作成・実施ができるサービスです。

page top