メインコンテンツへスキップ
見出し画像

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の扱い

     
     
    AI × ITセキュリティ× 子育て × 学び直し 1人で子育て、気付けば12年。 面白そうと情シスに転職。 そこから現在はIT部門へ。 学生時代より勉強してます。 https://m.youtube.com/@Ka0-cha.Studio

    あなたへのおすすめ