SQLまたは構造化照会言語は、リレーショナルデータベースを処理するための標準言語です。膨大な量のデータが存在するため、クエリを使用して必要なデータを取得する方法を理解することは非常に重要です。 SQLクエリのインタビューの質問に関するこの記事では、データベース管理者になるために練習する必要のあるいくつかのクエリについて説明し、インタビューのエースにも役立ちます。
SQLクエリの面接に関する上位の質問
理解を深めるために、クエリを作成するために次の表を検討します。
EmployeeInfoテーブル:
EmpID | EmpFname | EmpLname | 部門 | プロジェクト | アドレス | DOB | 性別 |
1 | Sanjay | Mehra | HR | P1 | ハイデラバード(HYD) | 1976年1月12日 | M |
2 | Ananya | ミシュラ | 管理者 | P2 | Delhi(DEL) | 1968年2月5日 | F |
3 | ローハン | Diwan | アカウント | P3 | ムンバイ(BOM) | 1980年1月1日 | M |
4 | ソニア | Kulkarni | HR | P1 | ハイデラバード(HYD) | 1992年2月5日 | F |
5 | Ankit | Kapoor | 管理者 | P2 | Delhi(DEL) | 1994年3月7日 | M |
EmployeePositionテーブル:
EmpID | EmpPosition | DateOfJoining | 給与 |
1 | マネージャー | 2022年1月5日 | 500000 |
2 | エグゼクティブ | 2022年2月5日 | 75000 |
3 | マネージャー | 2022年1月5日 | 90000 |
2 | リード | 2022年2月5日 | 85000 |
1 | エグゼクティブ | 2022年1月5日 | 300000 |
まず、SQLクエリの面接で最もよく聞かれる質問のいくつかを見てみましょう。
- 大文字でEmployeeInfoテーブルからEmpFnameをフェッチし、ALIAS名をEmpNameとして使用するクエリを記述します。
- 部門「HR」で働いている従業員の数を取得するためのクエリを記述します。
- 現在の日付を取得するためのクエリを記述します。
- EmployeeInfoテーブルからEmpLnameの最初の4文字を取得するクエリを記述します。
- EmployeeInfoテーブルの[アドレス]列から場所の名前(括弧の前の文字列)のみをフェッチするクエリを記述します。
- クエリを記述して、他のテーブルからコピーされたデータと構造で構成される新しいテーブルを作成します。
- qクエリを記述して、給与が50000〜100000のすべての従業員を検索します。
- 「S」で始まる従業員の名前を見つけるためのクエリを作成します
- 上位Nレコードをフェッチするクエリを記述します。
- 単一の列のEmpFnameとEmpLnameを「FullName」として取得するクエリを記述します。名と姓はスペースで区切る必要があります。
Q1。 EmployeeInfoテーブルから大文字でEmpFnameをフェッチし、ALIAS名をEmpNameとして使用するクエリを記述します。
SELECT UPPER(EmpFname) AS EmpName FROM EmployeeInfo;
Q2。部門「HR」で働いている従業員の数を取得するためのクエリを作成します。
SELECT COUNT(*) FROM EmployeeInfo WHERE Department = 'HR';
Q3。現在の日付を取得するためのクエリを作成します。
SQLServerでは次のようにクエリを記述できます。
SELECT GETDATE();
MySQLでは次のようにクエリを記述できます:
SELECT SYSTDATE();
Q4。 EmployeeInfoテーブルからEmpLnameの最初の4文字を取得するクエリを記述します。
SELECT SUBSTRING(EmpLname, 1, 4) FROM EmployeeInfo;
Q5。 EmployeeInfoテーブルのAddress列から場所の名前(括弧の前の文字列)のみをフェッチするクエリを記述します。
MySQLでのMID関数の使用
SELECT MID(Address, 0, LOCATE('(',Address)) FROM EmployeeInfo;
Using SUBSTRING
SELECT SUBSTRING(Address, 1, CHARINDEX('(',Address)) FROM EmployeeInfo;
Q6。他のテーブルからコピーされたデータと構造で構成される新しいテーブルを作成するためのクエリを記述します。
SELECT INTOコマンドの使用:
SELECT * INTO NewTable FROM EmployeeInfo WHERE 1 = 0;
MySQLでのCREATEコマンドの使用:
CREATE TABLE NewTable AS SELECT * FROM EmployeeInfo;
Q7。 qクエリを記述して、給与が50000〜100000のすべての従業員を検索します。
SELECT * FROM EmployeePosition WHERE Salary BETWEEN '50000' AND '100000';
Q8。 「S」で始まる従業員の名前を見つけるためのクエリを作成します
SELECT * FROM EmployeeInfo WHERE EmpFname LIKE 'S%';
Q9。 上位Nレコードをフェッチするクエリを記述します。
SQL ServerでTOPコマンドを使用する場合:
SELECT TOP N * FROM EmployeePosition ORDER BY Salary DESC;
MySQLでLIMITコマンドを使用する:
SELECT * FROM EmpPosition ORDER BY Salary DESC LIMIT N;
Q10。単一の列のEmpFnameとEmpLnameを「FullName」として取得するクエリを記述します。名と姓はスペースで区切る必要があります。
SELECT CONCAT(EmpFname, ' ', EmpLname) AS 'FullName' FROM EmployeeInfo;
Q11。 DOBが1970年2月5日から1975年12月31日までで、性別ごとにグループ化されている従業員の数を見つけるクエリを作成します
SELECT COUNT(*), Gender FROM EmployeeInfo WHERE DOB BETWEEN '02/05/1970 ' AND '31/12/1975' GROUP BY Gender;
Q12。 EmpLnameの降順とDepartmentの昇順で順序付けられたEmployeeInfoテーブルからすべてのレコードをフェッチするクエリを記述します。
レコードを昇順および降順で並べ替えるには、SQLでORDERBYステートメントを使用する必要があります。
SELECT * FROM EmployeeInfo ORDER BY EmpFname desc, Department asc;
Q13。 EmpLnameがアルファベット「A」で終わり、5つのアルファベットを含む従業員の詳細を取得するクエリを記述します。
特定の値を計算する詳細をフェッチするには、SQLでLIKE演算子を使用する必要があります。
SELECT * FROM EmployeeInfo WHERE EmpLname LIKE '____a';
Q14。 EmployeeInfoテーブルから「Sanjay」と「Sonia」という名の従業員を除くすべての従業員の詳細を取得するクエリを記述します。
SELECT * FROM EmployeeInfo WHERE EmpFname NOT IN ('Sanjay','Sonia');あなたのキャリアで前進するためにあなた自身をスキルアップしたいですか?このビデオをチェックしてください
2022年に学ぶべきトップ10テクノロジー|エドゥレカ
Q15。住所が「DELHI(DEL)」の従業員の詳細を取得するクエリを記述します。
SELECT * FROM EmployeeInfo WHERE Address LIKE 'DELHI(DEL)%';
Q16。管理職も兼務しているすべての従業員を取得するためのクエリを作成します。
SELECT E.EmpFname, E.EmpLname, P.EmpPosition FROM EmployeeInfo E INNER JOIN EmployeePosition P ON E.EmpID = P.EmpID AND P.EmpPosition IN ('Manager');
Q17。 部門を取得するためのクエリを作成する 部門ごとの従業員数を昇順で並べ替えたもの。
SELECT Department, count(EmpID) AS EmpDeptCount FROM EmployeeInfo GROUP BY Department ORDER BY EmpDeptCount ASC;
Q18。テーブルから偶数レコードと奇数レコードを計算するクエリを作成します。
テーブルから偶数レコードを取得するには、次のようにMOD()関数を使用する必要があります。
SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=0;
同様に、テーブルから奇数レコードを取得するには、次のようにクエリを記述できます。
SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=1;
Q19。 SQLクエリを記述して、EmployeePositionテーブルに参加した日付を持つEmployeeInfoテーブルから従業員の詳細を取得します。
SELECT * FROM EmployeeInfo E WHERE EXISTS (SELECT * FROM EmployeePosition P WHERE E.EmpId = P.EmpId);
Q20。 EmployeePositionテーブルから2つの最小給与と最大給与を取得するクエリを記述します。
2つの最低給与を取得するには、次のようにクエリを記述できます。
SELECT DISTINCT Salary FROM EmployeePosition E1 WHERE 2 >= (SELECTCOUNT(DISTINCT Salary)FROM EmployeePosition E2 WHERE E1.Salary >= E2.Salary) ORDER BY E1.Salary DESC;
To retrieve two maximum salaries, you can write a query as below:
SELECT DISTINCT Salary FROM EmployeePosition E1 WHERE 2 >= (SELECTCOUNT(DISTINCT Salary) FROM EmployeePosition E2 WHERE E1.Salary <= E2.Salary) ORDER BY E1.Salary DESC;
Q21。 TOP / limitキーワードを使用せずに、テーブルからN番目に高い給与を見つけるクエリを記述します。
SELECT Salary FROM EmployeePosition E1 WHERE N-1 = ( SELECT COUNT( DISTINCT ( E2.Salary ) ) FROM EmployeePosition E2 WHERE E2.Salary > E1.Salary );
Q22。テーブルから重複レコードを取得するクエリを記述します。
SELECT EmpID, EmpFname, Department COUNT(*) FROM EmployeeInfo GROUP BY EmpID, EmpFname, Department HAVING COUNT(*) > 1;
Q23。同じ部門で働いている従業員のリストを取得するためのクエリを作成します。
Select DISTINCT E.EmpID, E.EmpFname, E.Department FROM EmployeeInfo E, Employee E1 WHERE E.Department = E1.Department AND E.EmpID != E1.EmpID;を選択します。
Q24。 EmployeeInfoテーブルから最後の3つのレコードを取得するクエリを記述します。
SELECT * FROM EmployeeInfo WHERE EmpID <=3 UNION SELECT * FROM (SELECT * FROM EmployeeInfo E ORDER BY E.EmpID DESC) AS E1 WHERE E1.EmpID <=3;
Q25。 EmpPositionテーブルから3番目に高い給与を見つけるためのクエリを記述します。
SELECT TOP 1 salary FROM( SELECT TOP 3 salary FROM employee_table ORDER BY salary DESC) AS emp ORDER BY salary ASC;
Q26。 EmployeeInfoテーブルの最初と最後のレコードを表示するクエリを記述します。
EmployeeInfoテーブルの最初のレコードを表示するには、次のようにクエリを記述できます。
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MIN(EmpID) FROM EmployeeInfo);
EmployeeInfoテーブルの最後のレコードを表示するには、次のようにクエリを記述できます。
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MAX(EmpID) FROM EmployeeInfo);
Q27。データベースにメール検証を追加するクエリを作成します
SELECT Email FROM EmployeeInfo WHERE NOT REGEXP_LIKE(Email, ‘[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}’, ‘i’);
Q28。従業員が2人未満の部門を取得するためのクエリを作成します。
SELECT DEPARTMENT, COUNT(EmpID) as 'EmpNo' FROM EmployeeInfo GROUP BY DEPARTMENT HAVING COUNT(EmpD) < 2;
Q29。 EmpPostionと、それぞれに支払われた給与の合計を取得するクエリを作成します。
SELECT EmpPosition, SUM(Salary) from EmployeePosition GROUP BY EmpPosition;
Q30。 EmployeeInfoテーブルから50%のレコードをフェッチするクエリを記述します。
SELECT * FROM EmployeeInfo WHERE EmpID <= (SELECT COUNT(EmpID)/2 from EmployeeInfo);
これで、SQLクエリインタビューの質問の記事は終わりです。この一連のSQLクエリ面接の質問が、就職の面接のエースに役立つことを願っています。 面接に最適です!
ネットワークを備えた信頼できるオンライン学習会社であるEdurekaによるこのMySQLDBA認定トレーニングをご覧ください 25万人以上の満足した学習者が世界中に広がっています。 このコースでは、データを管理し、MySQLデータベースを管理するためのコアコンセプトと高度なツールおよびテクニックについてトレーニングします。これには、MySQL Workbench、MySQLサーバー、データモデリング、MySQLコネクタ、データベースデザイン、MySQLコマンドライン、MySQL関数などの概念に関する実践的な学習が含まれます。トレーニングの終わりに、独自のMySQLデータベースを作成および管理できるようになります。データを管理します。
質問がありますか?この「SQLクエリ」のコメントセクションで言及してください 面接の質問」の記事をご覧ください。できるだけ早くご連絡いたします。