
DS検定 2026対応!⑤ データベース もっとSQL問題
第1問
次のSQLの結果として正しいものはどれか。
SELECT *
FROM users
WHERE age = NULL;A. ageがNULLの行が取得される
B. ageがNULL以外の行が取得される
C. すべての行が取得される
D. エラーになる
正解:D
👉 解説
NULLは「=」で比較できない。
正しくは IS NULL
⸻
第2問
次のSQLの結果として正しいものはどれか。
SELECT *
FROM A
LEFT JOIN B
ON A.id = B.id
WHERE B.id = 10;A. Aの全データ
B. BがNULLの行も含むA全件
C. B.id=10の行だけ
D. エラーになる
正解:C
👉 解説
WHEREでB側を絞った時点でINNER JOINに近くなる。
⸻
第3問
次のSQLの結果として正しいものはどれか。
SELECT COUNT(column_name)
FROM table;A. NULLも含めた行数
B. NULLを除いた行数
C. 常に0
D. 重複を除いた行数
正解:B
👉 解説
COUNT(column)はNULLをカウントしない。
⸻
第4問
次のSQLは正しいか。
SELECT department, COUNT(*)
FROM employees;A. 正しい
B. エラーになる
C. 部署ごとに集計される
D. 全社員が出力される
正解:B
👉 解説
集計関数と非集計列はGROUP BY必須。
⸻
第5問
次のSQLの意味として正しいものはどれか。
SELECT department, COUNT(*)
FROM employees
WHERE COUNT(*) > 10
GROUP BY department;A. 正しいSQL
B. エラーになる
C. 部署ごとの人数が10以上
D. 全社員数が10以上
正解:B
👉 解説
WHEREでは集計関数は使えない。
⸻
第6問
次のSQLの結果として正しいものはどれか。
SELECT DISTINCT department, name
FROM employees;A. departmentごとに1行
B. nameごとに1行
C. departmentとnameの組み合わせで重複削除
D. departmentのみ取得
正解:C
👉 解説
ペア単位で重複排除される。
⸻
第7問
次のSQLの結果として正しいものはどれか。
SELECT *
FROM A
INNER JOIN B
ON A.id = B.id;A. Aの全件
B. Bの全件
C. 両方に存在するidのみ
D. AとBの直積
正解:C
👉 解説
完全一致のみ抽出。
⸻
第8問
次のSQLの結果は?
SELECT *
FROM users
ORDER BY created_at DESC
LIMIT 1;A. 最も古いユーザー
B. 最新のユーザー1件
C. 全ユーザー
D. ランダム1件
正解:B
👉 解説
DESC + LIMIT 1 = 最新1件取得
⸻
第9問
次のSQLの結果として正しいものはどれか。
SELECT *
FROM users
WHERE age <> 30;A. age=30の行だけ
B. ageがNULLの行も含まれる
C. ageが30以外の行のみ(NULL除外)
D. 全件
正解:C
👉 解説
NULLは比較対象外になる(UNKNOWN扱いで落ちる)
⸻
第10問
次のSQLの結果として正しいものはどれか。
SELECT name
FROM users
WHERE age > ALL (SELECT age FROM users WHERE department = 'A');A. A部門の平均より上
B. A部門の最大値より上
C. A部門の最小値より上
D. 全ユーザー
正解:B
👉 解説
ALLは「全てより大きい」=最大値超え
ここかなり重要ライン:
* DS検定のSQLはほぼ「罠パターン理解」
* 特に
* NULL
* WHERE vs HAVING
* LEFT JOINのフィルタ
* COUNTの扱い