12月 21, 2025
23 分で読める

ジュニアデータアナリスト面接質問:SQL・Excel・BI

interview
career-advice
job-search
entry-level
ジュニアデータアナリスト面接質問:SQL・Excel・BI
Milad Bonakdar

Milad Bonakdar

著者

SQL、Excel、ダッシュボード、統計、KPI、インサイトの伝え方を問うジュニアデータアナリスト面接質問で練習できます。


ジュニアデータアナリスト面接質問:準備すべきこと

ジュニアデータアナリストの面接では、乱れたデータを整理できるか、基本的な SQL を書けるか、Excel で要約できるか、わかりやすいダッシュボードを作れるか、ビジネス上の意味を簡潔に説明できるかがよく見られます。問題を見つけ、データを確認し、適切な指標を選び、結果を説明した短い例を準備しましょう。

このガイドでは、入門レベルの職種で聞かれやすい実践的な質問に絞っています。Excel の検索関数とピボット、SQL のフィルタと JOIN、Tableau または Power BI のダッシュボード、基礎統計、KPI、ステークホルダーへの説明を扱います。各回答を土台にして、実際のプロジェクト、授業、インターン経験の例を加えてください。

このガイドの使い方

面接前に 1 つのデータプロジェクトを選び、回答をその経験に結びつけましょう。面接官は、関数やクエリを知っているかだけでなく、いつ使うのか、出力をどう確認するのか、非技術者にどう説明するのかを聞きたいと考えています。


Excelの基礎 (5つの質問)

1. データ分析において最も重要なExcel関数は何ですか?

回答: すべてのデータアナリストが知っておくべき重要なExcel関数:

  • VLOOKUP/XLOOKUP: テーブル内の値を検索
  • IF/IFS: 条件ロジック
  • SUMIF/SUMIFS: 条件付き合計
  • COUNTIF/COUNTIFS: 条件付きカウント
  • ピボットテーブル: データの要約と分析
  • INDEX/MATCH: VLOOKUPよりも柔軟
  • テキスト関数: LEFT、RIGHT、MID、CONCATENATE
  • 日付関数: TODAY、DATEDIF、EOMONTH
# VLOOKUPの例
=VLOOKUP(A2, Products!A:C, 3, FALSE)

# SUMIFSの例(地域="East"、製品="Widget"の売上を合計)
=SUMIFS(Sales!C:C, Sales!A:A, "East", Sales!B:B, "Widget")

# INDEX/MATCHの例(VLOOKUPよりも柔軟)
=INDEX(Prices!C:C, MATCH(A2, Prices!A:A, 0))

# IFを使用した条件付き書式
=IF(B2>1000, "High", IF(B2>500, "Medium", "Low"))

希少度: 非常に一般的 難易度: 簡単


2. VLOOKUPとINDEX/MATCHの違いを説明してください。

回答:

  • VLOOKUP:
    • よりシンプルな構文
    • 右側のみを検索
    • 柔軟性が低い
    • 大規模なデータセットでは遅い
  • INDEX/MATCH:
    • より複雑な構文
    • 左右どちらも検索可能
    • より柔軟
    • より高速なパフォーマンス
    • 行/列全体を返すことができる
# VLOOKUP - A列の値を検索し、C列から返す
=VLOOKUP(A2, A:C, 3, FALSE)

# INDEX/MATCH - 同等だがより柔軟
=INDEX(C:C, MATCH(A2, A:A, 0))

# INDEX/MATCHの利点:左側を検索できる
=INDEX(A:A, MATCH(C2, C:C, 0))  # VLOOKUPではこれはできない

希少度: 非常に一般的 難易度: 簡単


3. ピボットテーブルの作成方法と使用方法を教えてください。

回答: ピボットテーブルは、大規模なデータセットを迅速に要約します。

  • 手順:
    1. データ範囲を選択
    2. 挿入 → ピボットテーブル
    3. フィールドを行、列、値にドラッグ
    4. フィルターと書式を適用
  • ユースケース: 地域別の売上の要約、傾向の分析、レポートの作成
# ピボットテーブルの構造:
行: 製品カテゴリ
列: 四半期
値: 売上の合計
フィルター: 地域

# ピボットテーブルの計算フィールド
利益率 = (収益 - コスト) / 収益

# 日付のグループ化
日付を右クリック → グループ → 月/四半期/年を選択

希少度: 非常に一般的 難易度: 簡単


4. 条件付き書式とは何ですか?また、どのような場合に使用しますか?

回答: 条件付き書式は、セルの値に基づいて視覚的な書式を適用します。

  • ユースケース:
    • 上位/下位の値を強調表示
    • データバーまたはカラースケールを表示
    • 重複を特定
    • 外れ値をフラグ付け
    • ヒートマップを作成
# 1000より大きいセルを強調表示
範囲を選択 → 条件付き書式 → セルの強調表示ルール → 指定の値より大きい

# カラースケール(グラデーション)
範囲を選択 → 条件付き書式 → カラースケール

# データバー
範囲を選択 → 条件付き書式 → データバー

# カスタム数式
=AND($B2>1000, $C2="Active")

希少度: 一般的 難易度: 簡単


5. Excelで重複を削除し、欠損データを処理するにはどうすればよいですか?

回答: 正確な分析のためにデータクレンジングは不可欠です。

# 重複の削除
データタブ → 重複の削除 → 列を選択

# 条件付き書式で重複を見つける
範囲を選択 → 条件付き書式 → セルの強調表示ルール → 重複する値

# 欠損データの処理
# オプション1:フィルターして削除
列をフィルター → (空白)のチェックを外す → 表示されている行を削除

# オプション2:平均で埋める
=IF(ISBLANK(A2), AVERAGE(A:A), A2)

# オプション3:下にコピー
範囲を選択 → Ctrl+D (Windows) または Cmd+D (Mac)

# 空白を検索して置換
Ctrl+H → 検索する文字列: (空白のまま) → 置換後の文字列: 0 または N/A

希少度: 非常に一般的 難易度: 簡単


SQLの基礎 (5つの質問)

6. テーブルからすべての列を選択するSQLクエリを記述してください。

回答: 基本的なSELECTステートメントは、テーブルからデータを取得します。

-- すべての列を選択
SELECT * FROM employees;

-- 特定の列を選択
SELECT first_name, last_name, salary
FROM employees;

-- エイリアスで選択
SELECT 
    first_name AS "First Name",
    last_name AS "Last Name",
    salary AS "Annual Salary"
FROM employees;

-- 重複しない値を選択
SELECT DISTINCT department
FROM employees;

-- 結果を制限
SELECT * FROM employees
LIMIT 10;

希少度: 非常に一般的 難易度: 簡単


7. WHERE句を使用してデータをフィルタリングするにはどうすればよいですか?

回答: WHERE句は、条件に基づいて行をフィルタリングします。

-- 単純な条件
SELECT * FROM employees
WHERE salary > 50000;

-- ANDを使用した複数の条件
SELECT * FROM employees
WHERE department = 'Sales' AND salary > 60000;

-- ORを使用した複数の条件
SELECT * FROM employees
WHERE department = 'Sales' OR department = 'Marketing';

-- IN演算子
SELECT * FROM employees
WHERE department IN ('Sales', 'Marketing', 'IT');

-- BETWEEN演算子
SELECT * FROM employees
WHERE salary BETWEEN 50000 AND 80000;

-- LIKE演算子(パターンマッチング)
SELECT * FROM employees
WHERE first_name LIKE 'J%';  -- Jで始まる

-- IS NULL
SELECT * FROM employees
WHERE manager_id IS NULL;

-- NOT演算子
SELECT * FROM employees
WHERE department NOT IN ('HR', 'Finance');

希少度: 非常に一般的 難易度: 簡単


8. JOIN操作とその種類について説明してください。

回答: JOINは、複数のテーブルからデータを結合します。

  • INNER JOIN: 両方のテーブルから一致する行を返します
  • LEFT JOIN: 左側のテーブルからすべての行を返し、右側のテーブルから一致する行を返します
  • RIGHT JOIN: 右側のテーブルからすべての行を返し、左側のテーブルから一致する行を返します
  • FULL OUTER JOIN: 両方のテーブルからすべての行を返します
-- INNER JOIN
SELECT e.first_name, e.last_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;

-- LEFT JOIN (部署のない従業員も含むすべての従業員)
SELECT e.first_name, e.last_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;

-- 複数のJOIN
SELECT 
    e.first_name,
    d.department_name,
    l.city
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id
INNER JOIN locations l ON d.location_id = l.location_id;

-- 自己結合(従業員とそのマネージャー)
SELECT 
    e.first_name AS employee,
    m.first_name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.employee_id;

希少度: 非常に一般的 難易度:


9. GROUP BYと集計関数の使用方法を教えてください。

回答: GROUP BYは行をグループ化し、集計関数はデータを要約します。

-- 部署ごとの従業員数をカウント
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;

-- 部署ごとの平均給与
SELECT 
    department,
    AVG(salary) AS avg_salary,
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees
GROUP BY department;

-- HAVING句(グループをフィルタリング)
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;

-- 複数のグループ化列
SELECT 
    department,
    job_title,
    COUNT(*) AS count,
    AVG(salary) AS avg_salary
FROM employees
GROUP BY department, job_title
ORDER BY department, avg_salary DESC;

-- 一般的な集計関数
-- COUNT, SUM, AVG, MIN, MAX, COUNT(DISTINCT)

希少度: 非常に一般的 難易度:


10. WHEREとHAVINGの違いは何ですか?

回答:

  • WHERE: グループ化する前に行をフィルタリングします
  • HAVING: グループ化後にグループをフィルタリングします
  • WHERE: 集計関数を使用できません
  • HAVING: 集計関数を使用できます
-- WHERE - グループ化する前にフィルタリング
SELECT department, AVG(salary) AS avg_salary
FROM employees
WHERE salary > 40000  -- 個々の行をフィルタリング
GROUP BY department;

-- HAVING - グループ化後にフィルタリング
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;  -- グループをフィルタリング

-- 両方を一緒に使用
SELECT department, AVG(salary) AS avg_salary
FROM employees
WHERE hire_date > '2020-01-01'  -- 最初に行をフィルタリング
GROUP BY department
HAVING COUNT(*) > 5;  -- 次にグループをフィルタリング

-- これは間違っています:
-- SELECT department FROM employees
-- WHERE COUNT(*) > 5;  -- エラー:WHEREで集計関数を使用できない

希少度: 非常に一般的 難易度: 簡単


データ可視化 (4つの質問)

11. 効果的なデータ可視化の主要な原則は何ですか?

回答: 優れた可視化は、洞察を明確に伝えます。

  • 原則:
    • 適切なグラフの種類を選択 (比較には棒グラフ、傾向には折れ線グラフ、全体に対する割合には円グラフ)
    • シンプルに保つ (乱雑さを避ける)
    • 適切な色を使用 (一貫性があり、アクセス可能)
    • 明確にラベル付け (タイトル、軸、凡例)
    • ストーリーを語る (主要な洞察を強調)
    • 対象者を考慮 (技術者向けか非技術者向けか)
Loading diagram...

希少度: 一般的 難易度: 簡単


12. 棒グラフと折れ線グラフを使い分けるのはどのような場合ですか?

回答: グラフの種類によって目的が異なります:

  • 棒グラフ:
    • カテゴリを比較
    • 離散データ
    • 例:地域別の売上、製品の比較
  • 折れ線グラフ:
    • 時間経過に伴う傾向を表示
    • 連続データ
    • 例:月間収益、株価
  • その他のグラフ:
    • 円グラフ: 全体に対する割合 (控えめに使用)
    • 散布図: 2つの変数の関係
    • ヒストグラム: 連続データの分布

希少度: 一般的 難易度: 簡単


13. Tableauとは何ですか?また、その主な機能は何ですか?

回答: Tableauは、主要なデータ可視化およびビジネスインテリジェンスツールです。

  • 主な機能:
    • ドラッグアンドドロップインターフェース (コーディング不要)
    • 複数のデータソースに接続 (データベース、Excel、クラウド)
    • インタラクティブなダッシュボード
    • リアルタイムデータ更新
    • 計算フィールドとパラメータ
    • 共有とコラボレーション
  • 一般的なタスク:
    • ワークシートの作成 (個々の可視化)
    • ダッシュボードの構築 (複数の可視化)
    • フィルターとパラメータの適用
    • 計算フィールドの作成
    • Tableau Server/Onlineへの公開

希少度: 非常に一般的 難易度: 簡単


14. TableauとPower BIの違いは何ですか?

回答: どちらもレポートやダッシュボードを作るためのツールですが、面接ではチームやデータ環境に合わせて選べることを示すのが大切です。

  • Tableau: 柔軟なビジュアル分析、ダッシュボード、計算フィールド、パラメーター、インタラクティブなビューに強みがあります。複数のデータソースを視覚的に探索したい場合に向いています。
  • Power BI: Excel、Fabric、Microsoft 365、Power Query、セマンティックモデル、DAX など、Microsoft 環境との相性が強みです。管理された定期レポートや業務ダッシュボードに向いています。
  • 答え方: どちらかが常に優れているとは言わず、利用者、既存ツール、データモデルの複雑さ、更新、権限、保守担当を比較します。

よいジュニア回答の例:「基本的なダッシュボードならどちらでも作れます。会社が Microsoft 中心なら Power BI、より柔軟な視覚的探索が必要なら Tableau を選びます。どちらでも、まずビジネス上の問いを確認し、データを整え、指標を定義し、公開前に合計値を検証します。」

統計と分析 (4つの質問)

15. 知っている代表値は何ですか?

回答: 代表値は、データセットの中心を表します:

  • 平均: 平均 (合計 / カウント)
    • 外れ値に敏感
    • 正規分布データに使用
  • 中央値: ソートされたときの中央の値
    • 外れ値に強い
    • 歪んだデータに使用
  • 最頻値: 最も頻繁に出現する値
    • カテゴリデータに使用
import numpy as np

data = [1, 2, 2, 3, 4, 5, 100]

mean = np.mean(data)  # 16.71 (外れ値100の影響を受ける)
median = np.median(data)  # 3 (外れ値の影響を受けない)
# mode = 2 (最も頻繁)

print(f"平均: {mean}")
print(f"中央値: {median}")

希少度: 非常に一般的 難易度: 簡単


16. データセット内の外れ値を特定するにはどうすればよいですか?

回答: 外れ値は、他の観測値と大きく異なるデータポイントです。

  • 方法:
    • 視覚的: 箱ひげ図、散布図
    • 統計的:
      • IQR法 (Q1/Q3から1.5 × IQRを超える)
      • Zスコア (|z| > 3)
      • 標準偏差 (2〜3標準偏差を超える)
import numpy as np

data = np.array([10, 12, 13, 12, 11, 14, 13, 15, 100, 12])

# IQR法
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1

lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

outliers = data[(data < lower_bound) | (data > upper_bound)]
print(f"外れ値: {outliers}")  # [100]

# Zスコア法
mean = np.mean(data)
std = np.std(data)
z_scores = np.abs((data - mean) / std)
outliers_z = data[z_scores > 3]
print(f"外れ値 (Zスコア): {outliers_z}")

希少度: 一般的 難易度:


17. 相関関係と因果関係の違いは何ですか?

回答:

  • 相関関係: 変数間の統計的関係
    • 相関係数で測定 (-1〜1)
    • 因果関係を意味しない
  • 因果関係: ある変数が別の変数の変化を直接引き起こす
    • 制御された実験が必要
    • 相関関係は必要だが十分ではない

例:

  • アイスクリームの売上と溺死者数は相関関係があります (どちらも夏に増加)
  • しかし、アイスクリームは溺死の原因ではありません (交絡変数: 気温)
-- SQLで相関関係を計算 (簡略化)
SELECT 
    CORR(sales, temperature) AS correlation
FROM daily_data;

-- 正の相関:両方とも一緒に増加
-- 負の相関:一方が増加すると、もう一方が減少
-- 相関なし:関係なし

希少度: 非常に一般的 難易度: 簡単


18. 変化率を計算するにはどうすればよいですか?

回答: 変化率は、2つの値間の相対的な変化を測定します。

# 数式
変化率 = ((新しい値 - 古い値) / 古い値) × 100

# Excelの数式
=(B2-A2)/A2*100

# 例:
古い値: 100
新しい値: 120
変化: (120-100)/100 = 0.20 = 20% 増加

# 前年比成長率
=(Sales_2023 - Sales_2022) / Sales_2022 * 100
-- SQLの変化率
SELECT 
    year,
    revenue,
    LAG(revenue) OVER (ORDER BY year) AS prev_year_revenue,
    ((revenue - LAG(revenue) OVER (ORDER BY year)) / 
     LAG(revenue) OVER (ORDER BY year) * 100) AS pct_change
FROM annual_sales;

希少度: 非常に一般的 難易度: 簡単


ビジネスインテリジェンスとレポート (2つの質問)

19. KPIとは何ですか?また、適切なKPIを選択するにはどうすればよいですか?

回答: KPI (Key Performance Indicator) は、目標がどの程度効果的に達成されているかを示す測定可能な値です。

  • 優れたKPIの特性:
    • 具体的: 明確で明確に定義されている
    • 測定可能: 定量化可能
    • 達成可能: 現実的
    • 関連性: ビジネス目標と連携している
    • 時間制約: 期間がある
  • 例:
    • 売上: 月間収益、コンバージョン率
    • マーケティング: 顧客獲得コスト、ROI
    • 運用: 注文処理時間、エラー率
    • 顧客: 満足度スコア、リテンション率

希少度: 一般的 難易度: 簡単


20. 技術者ではない関係者にデータの洞察をどのように提示しますか?

回答: 効果的なコミュニケーションは、データアナリストにとって非常に重要です。

  • ベストプラクティス:
    • 結論から始める (彼らが知る必要があること)
    • シンプルな可視化を使用 (複雑なグラフは避ける)
    • ストーリーを語る (コンテキスト、洞察、推奨事項)
    • 専門用語を避ける (技術用語を説明する)
    • ビジネスへの影響に焦点を当てる (収益、コスト、効率)
    • 実行可能な推奨事項を提供する
    • 質問に備える
  • 構造:
    1. エグゼクティブサマリー
    2. 主要な調査結果
    3. サポートデータ/可視化
    4. 推奨事項
    5. 次のステップ

希少度: 一般的 難易度:

Newsletter subscription

実際に機能する週次のキャリアのヒント

最新の洞察をメールボックスに直接お届けします

採用担当者に目立ち、夢の仕事を手に入れよう

ATSを通過し、採用担当者を感動させるAI搭載の履歴書でキャリアを変えた数千人の仲間に加わりましょう。

今すぐ作成を開始

この投稿を共有

履歴書作成時間を90%短縮

平均的な求職者は履歴書のフォーマットに3時間以上費やしています。当社のAIは15分以内で完成させ、応募段階に12倍速く到達できます。