sql >> データベース >  >> RDS >> Database

2022年に練習しなければならないSQLクエリインタビューの質問トップ30

    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クエリ」のコメントセクションで言及してください 面接の質問」の記事をご覧ください。できるだけ早くご連絡いたします。


    1. エラー:インデックス式の関数は、PostgresでIMMUTABLEとマークする必要があります

    2. CURTIME()の例– MySQL

    3. テキストまたは整数値を返す関数を作成するにはどうすればよいですか?

    4. データベースへのすべての接続を強制終了するスクリプト(RESTRICTED_USER ROLLBACK以上)