SQL または 構造化クエリ言語 リレーショナル データベースの標準言語です。 SQL クエリは、これらのデータベースに保存されているデータを操作、管理するために使用される強力なツールです。 MySQL 、 オラクル 、 PostgreSQL 特定のデータ ポイントを取得する場合でも、複雑な分析を実行する場合でも、データベース構造を変更する場合でも、SQL クエリはこれらのタスクを効率的に実行するための標準化された言語を提供します。
ここでは、 45 以上の MySQL 面接の質問とその回答 中によく聞かれること データアナリストへのインタビュー そして データエンジニア MAANG やその他の高給企業でのポジション。あなたが より新鮮な または 経験豊富なプロフェッショナル と 5 、 8 、 または 10年 経験豊富なこの記事を読めば、次の面接に合格するために必要な自信が得られます。
SQL クエリのインタビューの質問と回答
3 つのサンプル テーブルを作成しました。学生テーブル、番組表、 そして奨学金表。これらのテーブルを使用して、さまざまなクエリ操作を実行します。
学生テーブル
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
202 | ウメッシュ | シャルマ | 8.44 | 2021-09-01 08:30:00 | 数学 |
203 | ラケシュ | クマール | 5.60 | 2021-09-01 10:00:00 | 生物学 |
204 | ラダ | シャルマ | 9.20 | 2021-09-01 12:45:00 | 化学 |
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
208 | ナブリーン | カウル | 7.00 | 2021-09-01 06:30:00 | 数学 |
番組表
STUDENT_REF_ID | PROGRAM_NAME | PROGRAM_START_DATE |
---|---|---|
201 | コンピュータサイエンス | 2021-09-01 00:00:00 |
202 | 数学 | 2021-09-01 00:00:00 |
208 | 数学 | 2021-09-01 00:00:00 |
205 | 物理 | 2021-09-01 00:00:00 |
204 | 化学 | 2021-09-01 00:00:00 |
207 | 心理学 | 2021-09-01 00:00:00 |
206 | 歴史 | 2021-09-01 00:00:00 Javaの文字から文字列へ |
203 | 生物学 | 2021-09-01 00:00:00 |
奨学金表
STUDENT_REF_ID | 奨学金_金額 | 奨学金_DATE |
---|---|---|
201 | 5000 | 2021-10-15 00:00:00 |
202 | 4500 | 2022-08-18 00:00:00 |
203 | 3000 | 2022-01-25 00:00:00 |
201 | 4000 | 2021-10-15 00:00:00 |
まずはその一部を見てみましょう SQL クエリの面接で最もよく聞かれる質問 :
1. Student テーブルから FIRST_NAME を大文字で取得し、ALIAS 名を STUDENT_NAME として使用する SQL クエリを作成します。
SELECT upper(FIRST_NAME) as STUDENT_NAME from Student;>
出力:
SHIVANSH UMESH RAKESH RADHA KUSH PREM PANKAJ NAVLEEN>
2. Student テーブルから MAJOR Subject の一意の値をフェッチする SQL クエリを作成します。
SELECT DISTINCT MAJOR from STUDENT; or SELECT MAJOR FROM STUDENT GROUP BY(MAJOR);>
出力:
Computer Science Mathematics Biology Chemistry Physics History English>
3. Student テーブルの FIRST_NAME の最初の 3 文字を出力する SQL クエリを作成します。
SELECT SUBSTRING(FIRST_NAME, 1, 3) FROM Student;>
出力:
Shi Ume Rak Rad Kus Pre Pan Nav>
4. Student テーブルの名列「Shivansh」内のアルファベット (「a」) の位置を見つける SQL クエリを作成します。
SELECT INSTR(FIRST_NAME, 'a') FROM Student WHERE FIRST_NAME = 'Shivansh';>
出力:
5>
5. Student テーブルから MAJOR Subjects の一意の値をフェッチし、その長さを出力する SQL クエリを作成します。
SELECT MAJOR,LENGTH(MAJOR) FROM Student GROUP BY(MAJOR); or SELECT DISTINCT MAJOR, LENGTH(MAJOR) FROM Student;>
出力:
選考科目 | 長さ(メジャー) |
---|---|
コンピュータサイエンス | 16 |
数学 | 十一 |
生物学 | 7 |
化学 | 9 |
物理 | 7 |
歴史 | 7 |
英語 | 7 |
6. 「a」を「A」に置き換えて、Student テーブルから FIRST_NAME を出力する SQL クエリを作成します。
SELECT REPLACE(FIRST_NAME, 'a', 'A') FROM Student;>
出力:
ShivAnsh Umesh RAkesh RAdhA Kush Prem PAnkAj NAvleen>
7. Student テーブルの FIRST_NAME と LAST_NAME を 1 つの列 COMPLETE_NAME に出力する SQL クエリを作成します。
SELECT CONCAT(FIRST_NAME, ' ', LAST_NAME) AS COMPLETE_NAME FROM Student;>
出力:
Shivansh Mahajan Umesh Sharma Rakesh Kumar Radha Sharma Kush Kumar Prem Chopra Pankaj Vats Navleen Kaur>
8. Student テーブルからすべての生徒の詳細を FIRST_NAME 昇順および MAJOR Subject 降順の順序で出力する SQL クエリを作成します。
SELECT * FROM Student ORDER BY FIRST_NAME , MAJOR DESC;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
208 | ナブリーン | カウル | 7 | 2021-09-01 06:30:00 | 数学 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 キャッチキャッチJavaを試してください |
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
203 | ラケシュ | クマール | 5.6 | 2021-09-01 10:00:00 | 生物学 |
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
202 | ウメッシュ | シャルマ | 8.44 | 2021-09-01 08:30:00 | 数学 |
9. Student テーブルから FIRST_NAME が「Prem」および「Shivansh」である学生の詳細を出力する SQL クエリを作成します。
SELECT * from Student WHERE FIRST_NAME IN ('Prem' , 'Shivansh');>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
10. Student テーブルから FIRST_NAME を「Prem」および「Shivansh」として除いた生徒の詳細を出力する SQL クエリを作成します。
SELECT * from Student WHERE FIRST_NAME NOT IN ('Prem', 'Shivansh');>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
202 | ウメッシュ | シャルマ | 8.44 | 2021-09-01 08:30:00 | 数学 |
203 | ラケシュ | クマール | 5.6 | 2021-09-01 10:00:00 | 生物学 |
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
208 | ナブリーン | カウル | 7 | 2021-09-01 06:30:00 | 数学 |
11. FIRST_NAME が「a」で終わる生徒の詳細を出力する SQL クエリを作成します。
SELECT * FROM Student WHERE FIRST_NAME LIKE '%a';>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
12. FIRST_NAME が「a」で終わり、6 つのアルファベットが含まれる生徒の詳細を出力する SQL クエリを作成します。
SELECT * FROM Student WHERE FIRST_NAME LIKE '_____a';>
13. GPA が 9.00 ~ 9.99 の学生の詳細を出力する SQL クエリを作成します。
SELECT * FROM Student WHERE GPA BETWEEN 9.00 AND 9.99;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
14. SQL クエリを作成して、専攻科目「コンピューター サイエンス」を持つ学生の数を取得します。
SELECT Major, COUNT(*) as TOTAL_COUNT FROM Student WHERE MAJOR = 'Computer Science';>
出力:
選考科目 | 総数 |
---|---|
コンピュータサイエンス | 1 |
15. GPA>= 8.5 および <= 9.5 の学生のフルネームを取得する SQL クエリを作成します。
SELECT CONCAT(FIRST_NAME, ' ', LAST_NAME) AS FULL_NAME FROM Student WHERE GPA BETWEEN 8.5 and 9.5;>
出力:
Shivansh Mahajan Radha Sharma>
16. 番号を取得する SQL クエリを作成します。各専攻科目の学生の降順。
SELECT MAJOR, COUNT(MAJOR) from Student group by MAJOR order by COUNT(MAJOR);>
出力:
選考科目 | カウント(メジャー) |
---|---|
生物学 | 1 |
化学 | 1 |
コンピュータサイエンス | 1 |
英語 | 1 |
歴史 | 1 |
物理 | 1 |
数学 | 2 |
17. 奨学金を受け取った学生の名前、奨学金の金額、奨学金の日付などの詳細を表示します。
SELECT Student.FIRST_NAME, Student.LAST_NAME, Scholarship.SCHOLARSHIP_AMOUNT, Scholarship.SCHOLARSHIP_DATE FROM Student INNER JOIN Scholarship ON Student.STUDENT_ID = Scholarship.STUDENT_REF_ID;>
出力:
ファーストネーム | 苗字 | 奨学金_金額 | 奨学金_DATE |
---|---|---|---|
シヴァンシュ | マハジャン | 5000 | 2021-10-15 00:00:00 |
ウメッシュ | シャルマ | 4500 | 2022-08-18 00:00:00 |
ラケシュ | クマール | 3000 | 2022-01-25 00:00:00 |
シヴァンシュ | マハジャン | 4000 | 2021-10-15 00:00:00 |
18. Student テーブルの奇数行のみを表示する SQL クエリを作成します。
SELECT * FROM Student WHERE student_id % 2 != 0;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
203 | ラケシュ | クマール | 5.6 | 2021-09-01 10:00:00 | 生物学 |
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
19. Student テーブルの偶数行のみを表示する SQL クエリを作成します。
SELECT * FROM Student WHERE student_id % 2 = 0;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
202 | ウメッシュ | シャルマ | 8.44 | 2021-09-01 08:30:00 | 数学 |
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
208 | ナブリーン | カウル | 7 | 2021-09-01 06:30:00 | 数学 |
20. すべての学生と、奨学金を受け取っている場合はその金額をリストします。学生が奨学金を受け取っていない場合、奨学金の詳細には NULL が表示されます。
SELECT Student.FIRST_NAME, Student.LAST_NAME, COALESCE(Scholarship.SCHOLARSHIP_AMOUNT, NULL) AS SCHOLARSHIP_AMOUNT, COALESCE(Scholarship.SCHOLARSHIP_DATE, NULL) AS SCHOLARSHIP_DATE FROM Student LEFT JOIN Scholarship ON Student.STUDENT_ID = Scholarship.STUDENT_REF_ID;>
21. Student テーブルの順序の上位 n (たとえば 5) レコードを GPA の降順で表示する SQL クエリを作成します。
SELECT * from Student ORDER BY GPA DESC LIMIT 5;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
202 | ウメッシュ | シャルマ | 8.44 | 2021-09-01 08:30:00 | 数学 |
22. SQL クエリを作成して、テーブルから n 番目 (たとえば n=5) に高い GPA を決定します。
SELECT * FROM Student ORDER BY GPA DESC LIMIT 5, 1;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
23. LIMIT キーワードを使用せずに、5 番目に高い GPA を決定する SQL クエリを作成します。
SELECT * FROM Student s1 WHERE 4 = ( SELECT COUNT(DISTINCT (s2.GPA)) FROM Student s2 WHERE s2.GPA>= s1.GPA );>>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
24. 同じ GPA を持つ学生のリストを取得する SQL クエリを作成します。
SELECT s1.* FROM Student s1, Student s2 WHERE s1.GPA = s2.GPA AND s1.Student_id != s2.Student_id;>
25. サブクエリを使用して Student テーブルから 2 番目に高い GPA を表示する SQL クエリを作成します。
SELECT MAX(GPA) FROM Student WHERE GPA NOT IN(SELECT MAX(GPA) FROM Student);>
出力:
9.56>
26. テーブルの結果に 1 つの行を 2 回表示する SQL クエリを作成します。
SELECT * FROM Student UNION ALL SELECT * FROM Student ORDER BY STUDENT_ID;>
27. 奨学金を受け取っていない STUDENT_ID をリストする SQL クエリを作成します。
SELECT STUDENT_ID FROM Student WHERE STUDENT_ID NOT IN (SELECT STUDENT_REF_ID FROM Scholarship);>
出力:
204 205 206 207 208>
28. テーブルから最初の 50% レコードをフェッチする SQL クエリを作成します。
SELECT * FROM Student WHERE STUDENT_ID <= (SELECT COUNT(STUDENT_ID)/2 FROM Student);>
29. SQL クエリを作成して、参加者が 4 人未満の MAJOR 件名を取得します。
SELECT MAJOR, COUNT(MAJOR) AS MAJOR_COUNT FROM Student GROUP BY MAJOR HAVING COUNT(MAJOR) <4;>
出力:
選考科目 | MAJOR_COUNT |
---|---|
生物学 | 1 |
化学 | 1 |
コンピュータサイエンス | 1 |
英語 | 1 |
歴史 | 1 |
数学 | 2 |
物理 | 1 |
30. すべての主要な件名とそこに含まれる人数を表示する SQL クエリを作成します。
SELECT MAJOR, COUNT(MAJOR) AS ALL_MAJOR FROM Student GROUP BY MAJOR;>
出力:
選考科目 | ALL_MAJOR |
---|---|
生物学 | 1 |
化学 | 1 |
コンピュータサイエンス | 1 |
英語 | 1 |
歴史 | 1 |
数学 | 2 |
物理 | 1 |
31. テーブルの最後のレコードを表示する SQL クエリを作成します。
SELECT * FROM Student WHERE STUDENT_ID = (SELECT MAX(STUDENT_ID) FROM STUDENT);>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
208 | ナブリーン | カウル | 7 | 2021-09-01 06:30:00 | 数学 |
32. テーブルの最初の行をフェッチする SQL クエリを作成します。
SELECT * FROM Student WHERE STUDENT_ID = (SELECT MIN(STUDENT_ID) FROM Student);>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 8.79 | 2021-09-01 09:30:00 | コンピュータサイエンス |
33. テーブルから最後の 5 つのレコードをフェッチする SQL クエリを作成します。
SELECT * FROM ( SELECT * FROM Student ORDER BY STUDENT_ID DESC LIMIT 5 ) AS subquery ORDER BY STUDENT_ID;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
205 | 誰が | クマール | 7.85 | 2021-09-01 08:30:00 | 物理 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
208 | ナブリーン | カウル | 7 | 2021-09-01 06:30:00 | 数学 |
34. 相関サブクエリを使用してテーブルから 3 つの最大 GPA をフェッチする SQL クエリを作成します。
SELECT DISTINCT GPA FROM Student S1 WHERE 3>= (生徒 S2 WHERE S1.GPA から COUNT(DISTINCT GPA) を選択します<= S2.GPA) ORDER BY S1.GPA DESC;>
出力:
9.78 9.56 9.2>
35. 相関サブクエリを使用してテーブルから 3 分の GPA を取得する SQL クエリを作成します。
SELECT DISTINCT GPA FROM Student S1 WHERE 3>= (SELECT COUNT(DISTINCT GPA) FROM Student S2 WHERE S1.GPA>= S2.GPA) ORDER BY S1.GPA;>
出力:
5.6 7 7.85>
36. テーブルから n 番目の最大 GPA を取得する SQL クエリを作成します。
SELECT DISTINCT GPA FROM Student S1 WHERE n>= (生徒 S2 WHERE S1.GPA から COUNT(DISTINCT GPA) を選択します<= S2.GPA) ORDER BY S1.GPA DESC;>
37. SQL クエリを作成して、MAJOR 主題と各 MAJOR 主題の最大 GPA を取得します。
SELECT MAJOR, MAX(GPA) as MAXGPA FROM Student GROUP BY MAJOR;>
出力:
選考科目 | MAXGPA |
---|---|
生物学 | 5.6 |
化学 | 9.2 |
コンピュータサイエンス | 8.79 |
英語 | 9.78 |
歴史 | 9.56 |
数学 | 8.44 |
物理 | 7.85 |
38. GPA が最も高い学生の名前を取得する SQL クエリを作成します。
SELECT FIRST_NAME, GPA FROM Student WHERE GPA = (SELECT MAX(GPA) FROM Student);>
出力:
ファーストネーム | GPA |
---|---|
パンカジ | 9.78 |
39. 現在の日付と時刻を表示する SQL クエリを作成します。
Query to get current date : SELECT CURDATE(); Query to get current date and time : SELECT NOW();>
40. クエリを作成して、他のテーブル (たとえば Student) からコピーしたデータと構造で構成される新しいテーブルを作成するか、Student という名前のテーブルのクローンを作成します。
CREATE TABLE CloneTable AS SELECT * FROM Student;>
41. SQL クエリを作成して、「コンピューター サイエンス」専攻の全学生の GPA を 7.5 に更新します。
UPDATE Student SET GPA = 4.0 WHERE MAJOR = 'Computer Science';>
42. 各専攻の平均 GPA を見つける SQL クエリを作成します。
SELECT MAJOR, AVG(GPA) AS AVERAGE_GPA FROM Student GROUP BY MAJOR;>
出力:
C++での継承
選考科目 | AVERAGE_GPA |
---|---|
生物学 | 5.6 |
化学 | 9.2 |
コンピュータサイエンス | 4 |
英語 | 9.78 |
歴史 | 9.56 |
数学 | 7.72 |
物理 | 7.85 |
43. GPA が最も高い上位 3 人の学生を表示する SQL クエリを作成します。
SELECT * FROM Student ORDER BY GPA DESC LIMIT 3;>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
207 | パンカジ | バット | 9.78 | 2021-09-01 02:30:00 | 英語 |
206 | プレーム | チョプラ | 9.56 | 2021-09-01 09:24:00 | 歴史 |
204 | ラダ | シャルマ | 9.2 | 2021-09-01 12:45:00 | 化学 |
44. SQL クエリを作成して、各専攻の GPA が 7.5 を超える学生の数を調べます。
SELECT MAJOR, COUNT(STUDENT_ID) AS HIGH_GPA_COUNT FROM Student WHERE GPA>3.5 専攻ごとにグループ化;>>
出力:
選考科目 | HIGH_GPA_COUNT |
---|---|
生物学 | 1 |
化学 | 1 |
コンピュータサイエンス | 1 |
英語 | 1 |
歴史 | 1 |
数学 | 2 |
物理 | 1 |
45. SQL クエリを作成して、「Shivansh Mahajan」と同じ GPA を持つ学生を検索します。
SELECT * FROM Student WHERE GPA = (SELECT GPA FROM Student WHERE FIRST_NAME = 'Shivansh' AND LAST_NAME = 'Mahajan');>
出力:
学生証 | ファーストネーム | 苗字 | GPA | 登録日 | 選考科目 |
---|---|---|---|---|---|
201 | シヴァンシュ | マハジャン | 4 | 2021-09-01 09:30:00 | コンピュータサイエンス |
結論
要約すると、SQL クエリの面接の質問をマスターすることは、データ アナリスト、データ エンジニア、ビジネス アナリストなどの役割で優れた能力を発揮したい人にとって不可欠です。このガイドには、面接に向けて徹底的に準備できるように設計された、SQL クエリ面接の質問と回答の包括的なコレクションが用意されています。
これらのクエリを理解し、実践することで、さまざまなテクノロジー主導の業界で成功するデータ操作と分析を支える重要なスキルである SQL の習熟度を証明できます。