sql-rdbms queries and question bank

47
SQL QUERIES MD MUDASSIR K Create an employees table (empid, empname, jobname, salary, dateofjoin, dateofbirth, commission ). 1. List unique job names. select distinct jobname from emp2 2. Display the names who earn annual salary more than 1,00,000 select * from empm1 where salary >100000 3. Display employees who joined between 20-Feb- 2010, and 1-May-2012 4. List last name and salary who earn in the range 5,000 and 12,000, and are in department 20 or 50 select empname,salary from emp2 where salary between 100000 and 110000

Upload: md-mudassir

Post on 01-Jul-2015

745 views

Category:

Education


6 download

DESCRIPTION

Full SQL Queries , and Question Bank for SQL practical exams,

TRANSCRIPT

Page 1: SQL-RDBMS Queries and Question Bank

SQL QUERIES

MD MUDASSIR K

Create an employees table (empid, empname, jobname, salary, dateofjoin, dateofbirth, commission ).

1. List unique job names.

select distinct jobname from emp2

2. Display the names who earn annual salary more than 1,00,000

select * from empm1 where salary >100000

3. Display employees who joined between 20-Feb-2010, and 1-May-2012

4. List last name and salary who earn in the range 5,000 and 12,000, and are in department 20 or 50

select empname,salary from emp2 where salary between 100000 and 110000

5. Display the name and hire date who were born in 1995.

select empname,doj from emp2 where datepart(year,dob)=199

Page 2: SQL-RDBMS Queries and Question Bank

6. Display the name, salary, and commission for all employees who earn commissions. Sort data in descending order of salary and commissions.

SELECT salary, commision, empname

FROM emp2 where commision >0

order by commision desc

7. Display the name of all employees whose third letter contains is an ‘a’ in their name.

select * from emp2 where empname like '__l%'

8. Create a function to display a given two digit number in words.

create function n2w(@n int )

returns varchar(10)

as

begin

declare @w varchar(20)

if(@n=0) set @w='zero'

if(@n=1) set @w='one'

if(@n=2) set @w='two'

if(@n=3) set @w='three'

if(@n=4) set @w='four'

if(@n=5) set @w='five'

Page 3: SQL-RDBMS Queries and Question Bank

if(@n=6) set @w='six'

if(@n=7) set @w='seven'

if(@n=8) set @w='eight'

if(@n=9) set @w='nine'

return @w

end

create function words(@n int) returns varchar(20)

as

begin

declare @w VARCHAR(20)

declare @x int

declare @y int

set @x=@n/10

set @y=@n/10

set @w=dbo.n2w(@x)+' '+dbo.n2w(@y)

return @w

end

select dbo.words(33)

Page 4: SQL-RDBMS Queries and Question Bank

9. Create a user defined function to find the maximum of two numbers

create function maximum(@a int,@b int) returns int

as

begin

declare @c int

if(@a>@b)

set @c=@a

else

set @c=@b

return @c

end

select dbo.maximum(12,23)

10. Create a trigger to insert record in another table whenever a record is inserted in employees table.

create trigger ash

on emp2

after insert

as

insert into emp2backup select* from inserted

Page 5: SQL-RDBMS Queries and Question Bank

select * from emp2backup

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Create an employees table (empid, empname, jobname, salary, dateofjoin, dateofbirth, commission ).

1. Display all records. If commission is NULL then display zero.

select *, coalesce(commision,0)from emp2

2. Increase salary by 15% whose salary is below 10000.

SELECT *, salary+salary*15/100 from emp2 where salary<200000

3. Calculate the number of months between today and the date the employee was joined.

select *,datediff (month, doj,getdate()) from emp2

4. Display the employees who earn less than the average salary.

select empname from emp2 where salary<(select avg(salary) from emp2)

5. Displays the difference between the highest and lowest salaries.

Page 6: SQL-RDBMS Queries and Question Bank

select max(salary)-min(salary) from emp2

6. Display employees who have the same jobname as of Mr. Anil.

select empname from emp2

where jobname=(select jobname from emp2 where empname like 'aamir')

7. Create a trigger to store all deleted records in another table whenever a record is deleted.

CREATE TRIGGER ass on studinfo

after delete

as

insert into deletedstudent select * from deleted

select* from studinfo

select * from deletedstudent

delete studinfo where studid=338

8. Create a procedure to output employee name for a given empid.

create procedure getnames @id int,@name varchar(12) output

as

select* from emp2 where empid=@id

declare @x varchar(40)

Page 7: SQL-RDBMS Queries and Question Bank

execute getname 111,@x output

print @x

9. Create a function to find the maximum of two given numbers.

create function maximum(@a int,@b int) returns int

as

begin

declare @c int

if(@a>@b)

set @c=@a

else

set @c=@b

return @c

end

select dbo.maximum(12,23)

10. Use any four string functions in a query.

select len('thufail')

select upper('thufail')

select lower('THUFAIL')

SELECT ascii('A')

Page 8: SQL-RDBMS Queries and Question Bank

-------------------------------------------------------------------------------------------------------------------------------

m3

Create a Students table (studid, name, dob, friendid, mark1, mark2, mark3, total, average, city).

1. Add constraint to mark1,mark2 and mark3 to accept values from 0 to 100.

alter table studinfo add constraint c1

check (m1 between 0 and 100)

2. List the age of each student.

select * ,datediff(year,dob,getdate()) as age from studinfo

3. List the students whose name begins with vowel.

select * from studinfo where studname like '[aeiou]%'

4. Prefix all names with ‘Mr.’ if name doesnot begin with ‘Mr.’

select 'mr.'+studname from studinfo where studname not like 'Mr.'

5. List each student name and his friend name.

SELECT studinfo.studname, frnd.frndid, studinfo.friendid

FROM studinfo INNER JOIN

Page 9: SQL-RDBMS Queries and Question Bank

frnd ON studinfo.friendid = frnd.frndid

6. Find out in how many different cities students have come from.

select count(*) city from studinfo group by city.

7. Compute Total and Average of each student.

update studinfo set total=(m1+m2+m3)

update studinfo set avrg=avg(total)

8. Add a field result and set it to PASS if each mark is >=40 else FAIL.

update studinfo set result=case

when total>=35 then 'pass'

when total<35 then 'fail'

end

from studinfo

9. Create a trigger that ensures that you never allows multiple records at once from student table.

create trigger safe on studinfo

after insert

as

if(select count(*) from inserted)>1

Page 10: SQL-RDBMS Queries and Question Bank

rollback transaction

//test query is needed

10. Create a function to find the product of two given numbers.

create function maximum(@a int,@b int) returns int

as

begin

declare @c int

if(@a>@b)

set @c=@a

else

set @c=@b

return @c

end

select dbo.maximum(12,23)

------------------------------------------------------------------------------------------------------------------------------------

M4

Create a Students table (studid, name, dob, friendid, mark1, mark2, mark3, total, average, city).

Page 11: SQL-RDBMS Queries and Question Bank

1. How many days, hours, minutes are left for 1st May 2013.

select datediff(day,getdate(),'2014/05/01')

2. List students who are in the age group of 20 to 25

select * ,datediff(year,dob,getdate()) as age from studinfo

where datediff(year,dob,getdate()) between 20 and 100

3. List the eldest and the youngest student.

select top 1 * from studinfo order by dob desc

select top 1 * from studinfo order by dob

4. Add a field Division and compute division as Distinction if total is 200-300, First Class if total is 100-199 and

Second class if total is less than 100.

alter table studinfo add div varchar(50)

update studinfo set div=case

when total between 200 and 300 then 'first class'

when total between 100 and 199 then 'second class'

when total<100 then 'third class'

end

from studinfo

Page 12: SQL-RDBMS Queries and Question Bank

5. List student name and his friend name.

SELECT frnd.fname, studinfo.studname

FROM studinfo INNER JOIN

frnd ON studinfo.friendid = frnd.frndid

6. List students who have no friends.

SELECT top 1 * ,frnd.fname, studinfo.studname

FROM studinfo INNER JOIN

frnd ON studinfo.friendid = frnd.frndid

7. List all students who are elder than student Peter

8. Write a function to convert the given temperature to either Centigrade or Fahrenheit

CREATE function conver(@x int,@t varchar(50))

returns float

as begin

declare @temp float

if @t ='c'

set @temp=(@x-32)*5/9

else

Page 13: SQL-RDBMS Queries and Question Bank

set @temp=9*@x/5+32

return @temp

end

select dbo.conver(0,'f')

select dbo.conver(32,'c')

9. Create a trigger to display the old and new contents during an update command.

create trigger display

on studinfo

after delete

as

select d.studname+'is chnaged to'+i.studname from

inserted i,deleted d

update studinfo set studname='rahul' where studid=111

10. Write a procedure to delete a record given an id.

create procedure getnames @id int,@n varchar(10) output

Page 14: SQL-RDBMS Queries and Question Bank

as

delete empname from emp2 where empid=@id

declare @name varchar(30)

exec getname 111,@name output

print @name

-----------------------------------------------------------------------------------------------------------------------------------------------------

M5

Create two tables.

customers (customerid, customername) and orders (orderid, orderdate, orderamount, customerid)

1. Display Name, orderdate, orderamount of all customers.

SELECT customers.custname, orders.orderdate, orders.orderamount

FROM customers right JOIN

orders ON customers.custid = orders.custid

2. List customers who have not placed any orders.

select c.custid,custname,orderamount

from customers as c left join orders as o on c.custid=o.custid

Page 15: SQL-RDBMS Queries and Question Bank

where orderamount is null or orderamount=0

3. List the order amount placed by each customer

SELECT customers.custname, orders.orderamount

FROM customers INNER JOIN

orders ON customers.custid = orders.custid

4. Find the number of orders placed by each customer (in ascending order)

select custname,count(*) as 'num'

from customers join orders on customers.custid=orders.custid group by custname

5. What is the highest and lowest order placed in the month of March.

select max(orderamount) 'high',min(orderamount)'low'

from orders

where datepart(month,orderdate)=3

6. Find the two customers who have placed least orders.

select top 2 custname,sum(orderamount) from customers join orders on customers .custid=

orders.custid

group by custname

Page 16: SQL-RDBMS Queries and Question Bank

order by 2

7. Find the total order amount placed on each date.

select sum(orderamount)from orders group by orderdate

8. Create a trigger to display a print message whenever a table is created or deleted

create trigger printtri on database

for create_table,drop_table

as

print 'table created/deleted'

create table temp(id int)

DROP TABLE TEMP

9. Write a function to find the order amount of a given ordered.

CREATE function ord(@d int) returns int

as

begin

declare @m int

select @m=orderid from orders

where orderid=@d

Page 17: SQL-RDBMS Queries and Question Bank

return @m

end

select dbo.ord(123)

10. Write a procedure to print multiplication table of a given number

create procedure mtable @n int

as

declare @i int

set @i=1

while(@i<=10)

begin

print str(@n)+'X'+str(@i)+'='+str(@i*@n)

set @i=@i+1

end

mtable 15

========================================================================================

M6

Create two tables.

Page 18: SQL-RDBMS Queries and Question Bank

customers (customerid, customername) and orders (orderid, orderdate, orderamount, customerid)

1. Find the Maximum, Minimum, Total, Average and number of orders of each customer. Give proper heading.

select custname

,max(orderamount) 'MAX'

,min(orderamount) 'MIN'

, sum(orderamount) 'TOTAL'

,avg(orderamount) 'AVERAGE'

,count(orderamount) 'total no order'

from customers join orders on

customers.custid=orders.custid

group by custname

2. List 50% of orders with highest order amounts in the date order.

3. Copy the Customers table to newcustomers table with out any records.

select * into studnew from studinfo where 1=2

4. List the order amount placed by each customer on each day.

SELECT orders.orderamount, customers.custname, orders.orderdate

Page 19: SQL-RDBMS Queries and Question Bank

FROM customers INNER JOIN

orders ON customers.custid = orders.custid

5. Find the two customers who have placed highest orders.

select top 2 custname,sum(orderamount)

from customers join orders on customers.custid=orders.custid

group by custname

6. Which months have got the highest and the lowest orders?

select datepart(month,orderdate) from orders

where orderamount=(select max(orderamount) from orders)

union

select datepart(month,orderdate) from orders

where orderamount=(select min(orderamount) from orders)

7. Find number of orders and total order amount received in each month.

select count(orderid)'number of order' from orders

select sum(orderamount) from orders group by orderdate

8. Create a trigger that ensures that you never allow deletion of multiple records at once.

create trigger thu on studinfo

Page 20: SQL-RDBMS Queries and Question Bank

after delete

as

delete from studinfo

9. Create a procedure to print the ascii table.

create procedure asciitab

as

declare @i int

set @i=0

while(@i<=255)

begin

print str(@i)+''+char(@i)

set @i=@i+1

end

asciitab

10. Create a simple trigger.

create trigger mytri

on emp2

after delete

as

Page 21: SQL-RDBMS Queries and Question Bank

print 'table altered'

drop emp2 where empid=1234

========================================================================================

M7

Create the following four tables.

Location ( locationid, locationname) Department ( deptid, deptname, locationid) Job ( jobid, jobname)

Employees ( empid, name, , dateof join, salary, commission, deptid, managerid)

1. List all department details with its location name.

SELECT department.deptid, department.deptname, location.locname, department.locid

FROM department LEFT OUTER JOIN

location ON department.locid = location.locid

2. List out the employees whose name length is 4 and start with “S”

select * from employees where empname like 'b%'

Page 22: SQL-RDBMS Queries and Question Bank

3. List employees and their commission. If commission is null, then display 0

select empname,coalesce(commission,0) 'commission' from employees

4. How many employees are working in each department?

select deptname,count(*) 'no of employee' from employees join department on employees.deptid=department.deptid

group by deptname

5. List the number of employees joined in each month in ascending order.

select datepart(month,doj) 'month',count(*) 'no of emp' from employees

group by datepart(month,doj)

order by (month)

6. How many employees joined each month in 1985.

select datepart(year,doj),count(*) 'no of emp' from employees

group by datepart(year,doj),datepart(month,doj)

having datepart(year,doj)=2012

7. Create a procedure to list the employees of a given departmet

create procedure ems @a int

as

select * from employees where deptid=@a

Page 23: SQL-RDBMS Queries and Question Bank

ems 111

8. Add a computed column

9. Create a trigger to display the old and new contents during an update command.

create trigger disc on employees

after delete

as

select d.empname+'is changed to'+i.empname

from inserted i,deleted d

update employees set empname='harrish' where empid=434

10. Copy employees table to another table without records.

select * into empnew from employees where 1=2

========================================================================================

M8

Create the following four tables.

Page 24: SQL-RDBMS Queries and Question Bank

Location ( locationid, locationname) Department ( deptid, deptname, locationid) Job ( jobid, jobname)

Employees ( empid, name, , dateof join, salary, commission, deptid, managerid)

1. How many designations are in the organization?

select count(jobname) from job

2. Display the employee details with their manager names.

select e.empname 'empnmae',m.empname 'maneger'

from employees e join employees m on e.manegerid=m.empid

3. Show the number of employees working under every manager

select m.empname 'maneger name',count(*) from employees e join employees m on e.manegerid

group by m.empname

4. List out the job wise maximum salary, minimum salary, and average salaries of the employees.

select jobname,min(salary),max(salary),avg(salary)from employees

join job on employees.jobid=job.jobid

5. List out the employees whose name start with “S” and does not end with “H”

Page 25: SQL-RDBMS Queries and Question Bank

select * from employees where empname like 'b%'

6. How many employees have joined in January month?

select * from employees where empname like 'b%'

7. Display the employee who got the maximum salary.

select empname,salary from employees where salary=(select max(salary)from employees)

8. If a SIM card is free for 1000 hours, find the last valid date.

select dateadd(hour,1000,getdate())

9. Create a trigger to display the old and new contents during an update command.

create trigger disc on employees

after delete

as

select d.empname+'is changed to'+i.empname

from inserted i,deleted d

update employees set empname='harrish' where empid=434

10. Create a simple procedure.

create procedure news

Page 26: SQL-RDBMS Queries and Question Bank

as

select * from employees

execute news

========================================================================================

M9

Create a table PROGRAMMER (name, dateofbirth, dateofjoin, sex, salary, proficiency)

1.What is the average age of male programmers?

select * ,datediff(year,dob,getdate()) as age from program where sex like 'male'

2.List the experience in years for each programmer in descending order

select pname,datediff(year,doj,getdate()) as 'exp' from program

order by pname desc

3.Who are the programmers who celebrate their birthdays during the current month?

select * from program

where datepart(month,dob)=datepart(month,getdate())

Page 27: SQL-RDBMS Queries and Question Bank

4.How many male , female programmers are there?

select count(*) from program

where sex like 'male'

select count(*) from program

where sex like 'female'

5.Display the details of those who don’t know C, C++ or Pascal.

select pname from program where prof not like 'pascal'

6.Produce the following output for all the male programmers

Programmer Mr. Arvind – has 15 years of experience

select 'mr.'+pname+'_has',(datediff(year,doj,getdate()))'years of exp' from program

7.Write query to insert characters in a string.

select stuff('thufail',3,3,'s')

8.Add and Delete a Primary key Constraint.

alter table program add primary key(pname)

alter table program drop primary key(pname)

Page 28: SQL-RDBMS Queries and Question Bank

9.Write a procedure to print multiplication table of a given number.

reate procedure mtable @n int

as

declare @i int

set @i=1

while(@i<=10)

begin

print str(@n)+'X'+str(@i)+'='+str(@i*@n)

set @i=@i+1

end

mtable 15

10.Create a trigger to store all deleted records in another table whenever a record is deleted.

create trigger ast

on program

after delete

as

insert into emp2backup select* from deleted

Page 29: SQL-RDBMS Queries and Question Bank

select * from emp2backup

delete program where pname like 'javeed'

========================================================================================

M10

Create the tables Sailors (sid,sname,rating,age)

Boats (bid,bname,color)

Reserves(sid,bid,date)

1. Create above tables with necessary relation ships.

2. Find the names of sailors who have reserved boat number 103

select sname from sailores join reserve on

sailores.id=reserve.sid and bid =103

3. Find the sids of sailors who have reserved a Green boat

ELECT sailores.sname, reserve.bid

Page 30: SQL-RDBMS Queries and Question Bank

FROM sailores JOIN

reserve ON sailores.id = reserve.sid

and bid=(select bid from boats where color like 'green')

4. Find sailors whose rating is greater than that of some sailor called Kishan

select * from sailores where rate>(select rate from sailores where sname like 'aaa')

5. Find the sailors with the highest rating

select * from sailores where rate=(select max(rate) from sailores )

6. Find name and age of the eldest sailor.

elect top 1 with ties * from sailores order by age desc

7. List Sailors Name and Experience as follows

Experience - Age

Senior >=50

Middle >=40

Page 31: SQL-RDBMS Queries and Question Bank

Junior >=25

Beginner < 25.

select *,case

when age>=50 then 'senior'

when age>=40 then 'middler'

when age>=25 then 'junior'

else 'begin'

end

from sailores

8. Find the names of sailors who’ve reserved a red and a green boat.

select s.sname from boats b join reserve r on b.bid=r.bid

join sailores s on r.sid=s.id

where b.color like 'green'

intersect

select s.sname from boats b join reserve r on b.bid=r.bid

join sailores s on r.sid=s.id

where b.color like 'blue'

Page 32: SQL-RDBMS Queries and Question Bank

9. Write a function to convert the given temperature to either Centigrade or Fahrenheit.

CREATE function conver(@x int,@t varchar(50))

returns float

as begin

declare @temp float

if @t ='c'

set @temp=(@x-32)*5/9

else

set @temp=9*@x/5+32

return @temp

end

select dbo.conver(0,'f')

select dbo.conver(32,'c')

10. Create a trigger to display the old and new contents during an update command.

create trigger display

on studinfo

after delete

as

Page 33: SQL-RDBMS Queries and Question Bank

select d.studname+'is chnaged to'+i.studname from

inserted i,deleted d

update studinfo set studname='rahul' where studid=111

========================================================================================

M11

Create Student table (regnumber, name, marks, email, contactnumber)

1. Create a user defined function to find the maximum of two numbers

as

begin

declare @c int

if(@a>@b)

set @c=@a

else

set @c=@b

return @c

end

select dbo.maximum(12,23)

Page 34: SQL-RDBMS Queries and Question Bank

2.. Compute the Grade point of each student from his marks

Marks Grade Marks Grade

90-100 O+ 60-69 A

80-89 D+ 50-59 B

75-79 D 40-49 C

70-74 A+ 0-39 U

update students set grade= case

when mark between 90 and 100 then 'o+'

when mark between 80 and 89 then 'D+'

when mark between 75 and 79 then 'D'

when mark between 70 and 74 then 'A+'

when mark between 60 and 69 then 'A'

when mark between 50 and 59 then 'B'

when mark between 40 and 49 then 'C'

when mark between 1 and 39 then 'U'

Page 35: SQL-RDBMS Queries and Question Bank

end

from students

3. Create a trigger to store all deleted records in another table whenever a record is deleted from a table.

create trigger ast

on program

after delete

as

insert into emp2backup select* from deleted

select * from emp2backup

delete program where pname like 'javeed'

4. Create a procedure to print the ascii table

create procedure asciitab

as

declare @i int

set @i=0

Page 36: SQL-RDBMS Queries and Question Bank

while(@i<=255)

begin

print str(@i)+''+char(@i)

set @i=@i+1

end

asciitab

5. If a credit card is valid for 100 days from today, find the last valid date.

select dateadd(hour,1000,getdate())

6. Write any four mathematical functions in a query.

7. Write query to find average marks including nulls, excluding nulls.

select avg(mark) 'excluding null',sum(mark)/count(*) 'including null' from students

8. List all databases

select * from sys.databases

9. Rename a field contactnumber as phonenumber.

Page 37: SQL-RDBMS Queries and Question Bank

10. List students who do not have account in gmail or yahoo.

select sname from students

where email not like '%@gmail.com%'

========================================================================================

M12

Create tables authors ( authorid, name, address, city, state)

Titles ( titleid, title, price, publisheddate, authorid)

1. Which authors are not in TN State?

select * from author where

state not like 'tn'

2. Which title is the most expensive?

select top 1 with ties * from title

order by price desc

3. Show the latest published title.

select top 1 with ties * from title

order by pubdate desc

Page 38: SQL-RDBMS Queries and Question Bank

4. Show the title and author name of each title.

SELECT title.title, author.aname

FROM author INNER JOIN

title ON author.aid = title.aid

5. List the authors who live in the same city of Suresh.

SELECT author.aname, author.address

FROM author INNER JOIN

author AS author_1 ON author.address = author_1.address AND author.city = author_1.city AND author.state = author_1.state AND author.aid = author_1.aid

6. Give a discount of 10% in price if the price is above 1000

SELECT *, price-price*10/100 from title where price>1000

7. Which author has published more titles?

SELECT top 1 author.aname,count(title.tid)

FROM author INNER JOIN

title ON author.aid = title.aid

group by author.aname

order by 2 desc

8. Create a function to compute the Electricity bill from the units consumed.

Page 39: SQL-RDBMS Queries and Question Bank

First 100 Units - Rs. 1 per unit

Next 100 Units - Rs. 1.50 per unit

Next 200 Units - Rs. 3.00 per unit

Above 400 Units - Rs. 5.00 per unit.

9. List authors who have not written any title.

10. Add a field gender with a constraint which can accept either Male or Female.

select * ,case gender

when 'm' then 'Male'

when 'f' then 'Female'

end

from author

Page 40: SQL-RDBMS Queries and Question Bank