Sunday, 16 September 2012

sql important queries for interview purpose


Q1.find out manager of each employee.

empid   empname           managerid

1              mukesh                3

2              rakesh                  0

3              yogi                        2

4              sanjeev                1

5              hari                       1

Ans.

        select e.empid ,e.empname,M.empname as manager   from

empM e  left outer join empM M on

 m.empid=e.managerid

empid   empname           manager

1              mukesh                yogi

2              rakesh                NULL

3              yogi                      rakesh

4              sanjeev                mukesh

5              hari                     mukesh

Q2. Find out output of this query

        select e.empid ,e.empname,M.empname as manager   from

empM e  left outer join empM M on

 e.empid=m.managerid

ans.

empid empname     manager

1     mukesh      sanjeev

1     mukesh      hari

2     rakesh      yogi

3     yogi        mukesh

4     sanjeev     NULL

5     hari        NULL

Q3.find out that manager  who has more than 1 employee under him.

empid   empname           managerid

1              mukesh                3

2              rakesh                  0

3              yogi                        2

4              sanjeev                1

5              hari                       1

Ans.

 

 declare @manager as varchar(23),@count as int

 declare @name table(empid int ,empname varchar(23),managerid  varchar(34))

 insert into @name(empid,empname,managerid) select e.empid ,e.empname,M.empname as manager   from

empM e  left outer join empM M on

 m.empid=e.managerid

 

 select @manager=managerid,@count=COUNT(managerid)from @name group by managerid having COUNT(managerid)>1

 select @manager as manager

Q4. HOW TO USE OUPUT PARAMETER IN PROCEDURE

ANS.

 create proc sp_out

 (

   @a int,

   @b int,

   @c int output

   )

   as

   begin

   set @c=@a+@b

   end

  

   declare @p as int

   exec sp_out 1,2,@p output

   select @p

   3

Q5 WHAT WOULD BE OUTPUT OF LEFT OUTER JOIN IF WE HAVE TWO TABLE LIKE THIS

1.TABLE PK

ID        NAME

1        MUKESH

2        YOGI

NULL     YOGI

 

2. TABLE JK

 

REFID       ADDRESS

NULL        NULL 

1           KANPUR

NULL        JHANSI

 

ANS.

  SELECT PK.ID,PK.NAME,JK.[ADDRESS] FROM PK LEFT OUTER JOIN JK ON

         PK.ID=JK.REFID

ID      NAME      ADDRESS

1     MUKESH     KANPUR

2     YOGI       NULL

NULL  YOGI       NULL

NULL  YOGI       JHANSI

Q6. GIVE YOUR VIEW WHETHER SP_TB  PROCEDURE

1 WILL RUN OR NOT BCZ  TEMP TABLE  IS NOT CREATED IN PROCEDURE SP_PO

 

       CREATE PROC SP_TB

         AS

         BEGIN

         CREATE TABLE #TEMP(NAME VARCHAR(23))

          EXEC SP_PO

         END

        

        

          CREATE PROC SP_PO

         AS

         BEGIN

         INSERT INTO #TEMP VALUES('MUKESH')        

         END

        

ANS THIS WILL RUN SMOOTHLY

Q7. JOINS

 

TABLE 1.  EMPM

empid   empname           managerid

1              mukesh                3

2              rakesh                  0

3              yogi                        2

4              sanjeev                1

5              hari                       1

   TABLE 2.   EMPM2

REFID    ADDRESS

1              KANPUR

TABLE 3 . EMPM3

 FID        SEX

2              MALE

 

NOW SEE THE RESULT OF QUERY

 

                                                                 LEFT OUTER JOIN        

         SELECT PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID

WILL PRODUCE THE RESULT

empid empname     ADDRESS

1     mukesh      KANPUR

2     rakesh      NULL

3     yogi        NULL

4     sanjeev     NULL

5     hari        NULL

 

NOW APPLY AGAIN INNER JOIN THEN RESULT

 

         SELECT PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID INNER JOIN

         EMPM3 PM3 ON PM.empid=PM3.FID

 

empid   empname           ADDRESS

2              rakesh                  NULL

IF  APPLY AGAIN LEFT OUTER THEN RESULT

 

         SELECT PM.empid,PM.empname,PM2.[ADDRESS],PM3.SEX FROM EMPM PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID LEFT OUTER JOIN

         EMPM3 PM3 ON PM.empid=PM3.FID

 

empid empname     ADDRESS     SEX

1     mukesh      KANPUR      NULL

2     rakesh      NULL        MALE

3     yogi        NULL        NULL

4     sanjeev     NULL        NULL

5     hari        NULL        NULL

 

NOW WHEN WE APPLY RIGHT JOIN IN PREVIOUS TWO TABLE THEN RESULT

SELECT PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM PM RIGHT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID

empid empname    ADDRESS

1     mukesh     KANPUR

 

NOW WHEN WE APPLY LEFT JOIN IN PREVIOUS QUERY THEN RESULT

SELECT PM.empid,PM.empname,PM2.[ADDRESS],PM3.SEX FROM EMPM PM RIGHT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID LEFT OUTER JOIN

         EMPM3 PM3 ON PM.empid=PM3.FID

empid empname     ADDRESS     SEX

1     mukesh      KANPUR      NULL

 

Q8. USING JOIN IN  UPDATE

UPDATE  PM1 SET PM1.EMPNAME='yogi' FROM EMPM PM1

          INNER JOIN EMPM2 PM2 ON PM1.empid=PM2.REFID

 Q9. how to use cursor.

sql query Copying table data to another table that should not be repeating terms using Cursor



sql query Copying table data to another table that should not be repeating terms using Cursor


DECLARE @ACCOUNTID BIGINT
DECLARE @NAME VARCHAR(30)
DECLARE @TEB TABLE(NAME VARCHAR(34),NUM BIGINT)
DECLARE @GETACCOUNTID CURSOR
SET @GETACCOUNTID = CURSOR FOR
SELECT NAME, MBNO
FROM EMP1
OPEN @GETACCOUNTID
FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS(SELECT 1 FROM @TEB WHERE NAME=@NAME AND NUM=@ACCOUNTID)
zzBEGIN
DECLARE @P AS BIGINT
INSERT INTO @TEB VALUES(@NAME,@ACCOUNTID)
END


FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
END
CLOSE @GETACCOUNTID
DEALLOCATE @GETACCOUNTID
SELECT* FROM @TEB
Q10. how to use case statement in sql
ans.
          
select  name,case(age) when '23' then '101'
when '27'then '102'
else
'mukesh'
end              

from emp

Q11.HERE WE HAVE A TABLE LIKE THIS

TABLE EMP12

name      gender
mukesh     m
yogi       f
rakesh     m

UPDATE THE TABLE OF COLUMN GENDER WHERE M THEN F AND WHERE F THERE M

ANS 


UPDATE emp12

SET
gender = CASE
WHEN gender = 'm'
THEN 'f'
ELSE 'm'
END

 

 

 

 

 

 

 

 

 

 

No comments:

Post a Comment