Solution Worksheet SQL
Solution Worksheet SQL
com
Page :1
for more details visit : python4csip.com
16 The following query is producing an error. Identify the error and also write the correct query.
SELECT * FROM EMP ORDER BY NAME WHERE SALARY>=5000;
Ans. As per MySQL, ORDER BY must be the last clause in SQL QUERY, and in this query ORDER
BY is used before WHERE which is wrong, the correct query will be:
SELECT * FROM EMP WHERE SALARY>=5000 ORDER BY NAME;
17 If Table Sales contains 5 records and Raj executed the following queries; find out the output
of both the query.
(i) Select 100+200 from dual;
(ii) Select 100+200 from Sales;
Ans. (i) 300
(ii) 300
300
300
300
300
18 What is the difference between Equi-Join and Natural Join?
Ans. In Equi join we compare value of any column from two tables and it will return matching
rows. In Equi-join common column appears twice in output because we fetch using (*) not by
specifying column name. for e.g.
In Equi-join it is not mandatory to have same name for column to compare of both table
In natural join also the matching rows will return. In natural join column will appear only
once in output. Then name of column must be same in both table if we are performing
natural join using the clause NATURAL JOIN.
19 Observe the given Table TEACHER and give the output of question (i) and (ii)
TEACHER_CODE TEACHER_NAME DOJ
T001 ANAND 2001-01-30
T002 AMIT 2007-09-05
T003 ANKIT 2007-09-20
T004 BALBIR 2010-02-15
T005 JASBIR 2011-01-20
T006 KULBIR 2008-07-11
(i) SELECT TEACHER_NAME,DOJ FROM TEACHER WHERE TEACHER_NAME LIKE „%I%‟
(ii) SELECT * FROM TEACHER WHERE DOJ LIKE „%-09-%‟;
Ans (i)
TEACHER_NAME DOJ
-------------------------------------------------------
AMIT 2007-09-05
ANKIT 2007-09-20
BALBIR 2010-02-15
JASBIR 2011-01-20
KULBIR 2008-07-11
(ii)
TEACHER_CODE TEACHER_NAME DOJ
----------------------------------------------------------------------
T002 AMIT 2007-09-05
T003 ANKIT 2007-09-20
20 Which SQL function is used to get the average value of any column?
Ans. AVG()
21 What is the difference between COUNT() and COUNT(*) function
Ans. COUNT() function will count number of values in any column excluding the NULLs
COUNT(*) will count number of rows in query output including NULLs
22 What is the full form of SQL?
Ans. Structured Query Language
Page :2
for more details visit : python4csip.com
Page :3
for more details visit : python4csip.com
31 Write SQL queries for (i) to (iv) and find outputs for SQL queries (v) to (viii) which are based on tables
TABLE: TRANSACT
TRNO ANO AMOUNT TYPE DOT
T001 101 2500 Withdraw 2017-12-21
T002 103 3000 Deposit 2017-06-01
T003 102 2000 Withdraw 2017-05-12
T004 103 1000 Deposit 2017-10-22
T005 102 12000 Deposit 2017-11-06
(i) To display details of all transactions of TYPE Withdraw from TRANSACT table
(ii) To display ANO and AMOUNT of all Deposit and Withdrawals done in month of
„May‟ 2017 from table TRANSACT
(iii) To display first date of transaction (DOT) from table TRANSACT for Account having
ANO as 102
(iv) To display ANO, ANAME, AMOUNT and DOT of those persons from ACCOUNT and
TRANSACT table who have done transaction less than or equal to 3000
(v) SELECT ANO, ANAME FROM ACCOUNT
WHERE ADDRESS NOT IN ('CHENNAI', 'BANGALORE');
(vi) SELECT DISTINCT ANO FROM TRANSACT
(vii) SELECT ANO, COUNT(*), MIN(AMOUNT) FROM TRANSACT
GROUP BY ANO HAVING COUNT(*)> 1
(viii) SELECT COUNT(*), SUM(AMOUNT) FROM TRANSACT
WHERE DOT <= '2017-10-01'
Ans. (i) Select * from TRANSACT where TYPE=’Withdraw’;
(ii) Select ANO, AMOUNT from TRANSACT where DOT like ‘%-05-%’;
(iii) Select MIN(DOT) from TRANSACT where ANO=102
(iv) Select ANO,T.ANO,ANAME,AMOUNT from ACCOUNT A, TRANSACT T where A.ANO = T.ANO and
AMOUNT<=3000;
(v)
ANO ANAME
-------------------------------------
103 Ali Reza
105 Simran Kaur
(vi)
ANO
----------
101
103
102
(vii)
(viii)
Page :4
for more details visit : python4csip.com
32 Consider the following tables EMP and SALGRADE, write the query for (i) to (vi) and output
for (vii) to (x)
TABLE: EMPLOYEE
ECODE NAME DESIG SGRADE DOJ DOB
101 Vikrant Executive S03 2003-03-23 1980-01-13
102 Ravi Head-IT S02 2010-02-12 1987-07-22
103 John Cena Receptionist S03 2009-06-24 1983-02-24
105 Azhar Ansari GM S02 2009-08-11 1984-03-03
108 Priyam Sen CEO S01 2004-12-29 1982-01-19
TABLE: SALGRADE
SGRADE SALARY HRA
S01 56000 18000
S02 32000 12000
S03 24000 8000
(i) To display details of all employee in descending order of their DOJ
(ii) To display NAME AND DESIG of those employees whose sgrade is either „S02‟ or
„S03‟
(iii) To display NAME, DESIG, SGRADE of those employee who joined in the year 2009
(iv) To display all SGRADE, ANNUAL_SALARY from table SALGRADE [where
ANNUAL_SALARY = SALARY*12]
(v) To display number of employee working in each SALGRADE from table EMPLOYEE
(vi) To display NAME, DESIG, SALARY, HRA from tables EMPLOYEE and SALGRADE
where SALARY is less than 50000
(vii) Select MIN(DOJ), MAX(DOB) from employee;
(viii) Select SGrade,Salary+HRA from SalGrade where Sgrade=‟S02‟
(ix) Select count(distinct sgrade) from employee
(x) Select sum(salary), avg(salary) from salgrade
Ans (i) SELECT * FROM EMPLOYEE ORDER BY DOJ DESC
(ii) SELECT NAME,DESIG FROM EMPLOYEE WHERE SGRADE IN ('S02','S03')
OR
SELECT NAME,DESIG FROM EMPLOYEE WHERE SGRADE='S02' OR
SGRADE='S03'
(iii) SELECT NAME,DESIG,SGRADE FROM EMPLOYEE WHERE DOJ LIKE '2009%'
(iv) SELECT SGRADE,SALARY*12 ANNUAL_SALARY FROM SALGRADE
(v) SELECT SGRADE,COUNT(*) FROM EMPLOYEE GROUP BY SGRADE
(vi) SELECT NAME,DESIG,SALARY,HRA FROM EMPLOYEE E,SALGRADE S WHERE
E.SGRADE=S.SGRADE AND SALARY<=50000
(vii) MIN(DOJ) MAX(DOB)
------------------------------------
2003-03-23 1987-07-22
(viii) SGRADE SALARY+HRA
---------------------------------
S02 44000
(ix) COUNT(*)
---------------
3
(x) SUM(SALARY) AVG(SALARY)
--------------------------------------------
112000 37333.33
Page :5
for more details visit : python4csip.com
33
(i) To display details of all Trains which starts from New Delhi
(ii) To display PNR, PNAME, GENDER and AGE of all passengers whose AGE is below
50
(iii) To display total numbers of MALE and FEMALE passengers
(iv) To display records of all passengers travelling in trains whose TNO is 12015
(v) SELECT MAX(TRAVELDATE),MIN(TRAVELDATE) FROM PASSENGERS WHERE
GENDER=‟FEMALE‟;
(vi) SELECT END, COUNT(*) FROM TRAINS GROUP BY END HAVING COUNT(*)>1;
(vii) SELECT DISTINCT TRAVELDATE FROM PASSENGERS;
(viii) SELECT TNAME, PNAME FROM TRAINS T, PASSENGERS P WHERE T.TNO=P.TNO
AND AGE BETWEEN 50 AND 60
Page :6
for more details visit : python4csip.com
Page :7
for more details visit : python4csip.com
(i) To display Name and Price of all the Accessories in descending order of their Price
(ii) To display Id and Sname of all the Shoppe location in „Nehru Place‟
(iii) To display Name, Minimum and Maximum Price of each Name from ACCESSORIES
table
(iv) To display Name, Price of all Accessories and their respective SName from table SHOPPE
and ACCESSORIES where Price is 5000 or more.
(v) To display all details of accessories where name contains word „Board‟;
(vi) SELECT DISTINCT NAME FROM ACCESSORIES WHERE PRICE>5000;
(vii) SELECT AREA,COUNT(*) FROM SHOPPE GROUP BY AREA;
(viii) SELECT AVG(PRICE), MAX(PRICE) FROM ACCESSORIES WHERE PRICE>=10000;
(ix) SELECT NAME, PRICE*.05 DISCOUNT FROM ACCESSORIES WHERE ID IN („S02‟,‟S03‟)
(x) SELECT * FROM SHOPPE S, ACCESSORIES A WHERE S.ID = A.ID AND PRICE>=10000;
Ans (i) SELECT NAME,PRICE FROM ACCESSORIES ORDER BY PRICE DESC
(ii) SELECT ID,SNAME FROM SHOPPE WHERE AREA='NEHRU PLACE'
(iii) SELECT NAME,MIN(PRICE),MAX(PRICE) FROM ACCESSORIES GROUP BY NAME
(iv) SELECT NAME,PRICE,SNAME FROM SHOPPE S, ACCESSORIES A WHERE
S.ID=A.ID AND PRICE>=5000
(v) SELECT * FROM ACCESSORIES WHERE NAME LIKE „%BOARD%‟
(vi) NAME
-----------
Mother Board
LCD
(vii) AREA COUNT(*)
-------------------------------
CP 2
GK II 1
Nehru Place 2
(viii) AVG(PRICE) MAX(PRICE)
-------------------------------------
12500 13000
(ix) NAME DISCOUNT
-----------------------------------
Keyboard 25
Mother Board 650
Keyboard 20
Hard Disk 225
(x) ID SNAME AREA NO NAME PRICE ID
-------------------------------------------------------------------------------------------------------
S01 ABC Computronics CP A01 Mother board 12000 S01
S02 All Infotech media GK II A05 Mother board 13000 S02
Page :8
for more details visit : python4csip.com
35 a) In a database there are two tables : Write MYSQL queries for (i) to (iii)
Table : Item
ICode IName Price Color VCode
S001 Mobile Phones 30000 Silver P01
S002 Refrigerator 20000 Cherry P02
S003 TV 45000 Black P03
S004 Washing Machine 12000 White P04
S005 Air Conditioner 50000 White P05
Table : Vendor
VCode VName
P01 Rahul
P02 Mukesh
P03 Rohan
P04 Kapil
(i) To display ICode, IName and VName of all the vendors, who manufacture “Refrigerator”.
(ii) To display IName, ICode, VName and price of all the products whose price >=23000
(iii) To display Vname and IName manufactured by vendor whose code is “P04”.
Ans (i) Select ICode, IName,VName from Item I,Vendor V where I.Vcode=V.VCode and
IName='Refrigerator'
(ii) Select IName, ICode,VName from Item I,Vendor V where I.Vcode=V.VCode and
Price>=23000
(iii) Select VName,IName from Item I,Vendor V where I.Vcode=V.VCode and
I.VCode='P04'
b) What will be the output of the following-
1. Select Round(1449.58,-2);
2. Select Round(7.5789,3); IP ONLY
3. Select Substr(“ Hello Rahul”,3,8);
4. Select Dayofmonth(“2020-10-24”);
And 1. 1400
2. 7.579
3. elloh Rah
4. 24
36 In a database there are two tables : Write MYSQL queries for (i) to (vi)
Table : Doctors
DocID DocName Department NoofOpdDays
101 J K Mishra Ortho 3
102 Mahesh tripathi ENT 4
103 Ravi Kumar Neuro 5
104 Mukesh Jain Physio 3
Table : Patients
PatNo PatName Department DocId
1 Payal ENT 102
2 Naveen Ortho 101
3 Rakesh Neuro 103
4 Atul Physio 104
(i) To display PatNo, PatName and corresponding DocName for each patient.
(ii) To display the list of all doctors whose NoofOpdDays are more than 3
(iii) To display DocName, Department,PatName and DocId from both the tables where DocID
is either 101 or 103
(iv) To display total no of different departments from Patients table.
Page :9
for more details visit : python4csip.com
Page :10
for more details visit : python4csip.com
Page :11
for more details visit : python4csip.com
(i) To display the name of employees starting from „V‟ in ascending order of their salary
(ii) To display the details of all SALES dept employee who are earning salary more than
20000
(iii) To count distinct department from the table
(iv) Change the salary of NITIN from 18000 to 20000
(v) To insert a new row in the table Employee
„6‟, „SUMIT‟,‟HR‟, 40000,2000
(vi) Select AVG(COMM) from Employee
(vii) Select ENAME,DEPT from Employee where Dept in(„HR‟,‟ACCOUNTS‟)
(viii) Select ENAME, SALARY+100 NEWSAL from Employee
Ans. (i) select ename from employee where ename like 'V%' order by salary;
(ii) Select * from employee where dept='Sales' and salary>20000;
(iii) select count(distinct dept) from employee;
(iv) update employee set salary=20000 where ename='NITIN';
(v) insert into employee values(6,'SUMIT','HR',40000,2000)
(vi) 1980 (including record inserted in (v))
(vii) ENAME DEPT
--------------------------
ANKIT HR
SUJEET ACCOUNTS
VIJAY HR
(viii) ENAME NEWSAL
----------------------------------
ANKIT 20100
SUJEET 24100
VIJAY 28100
NITIN 20100
VIKRAM 22100
SUMIT 40100
48 Write MYSQL command to create the table ENQUIRY including its constraints
Table : ENQUIRY
Name of column Type Size Constraints
visitorID Decimal 4 Primary key
visitorName Varchar 20
visitorMobile Char 10 Not null
visitorAddress Varchar 40
Ans. create table ENQUIRY(visitorID decimal(4) primary key, visitorName varchar(20) visitorMobile
char(10) not null, visitorAddress varchar(40))
49 In a database there are two tables :
Table : Doctor
DocID DocName Specialist
D001 Vimal Jha Cardio
D002 Sunil Bawra Ortho
D003 Mukul Barman Surgeon
D004 Nitesh Solanki Skin
Page :12
for more details visit : python4csip.com
Table : Patient
PatID PatName DateAdm DocID
P001 Kapil 2013-10-10 D002
P002 Susheel 2013-09-01 D001
P003 Wasim 2013-10-15 D002
P004 Sanjay 2013-10-12 D003
P005 Jai 2013-10-17 D003
Page :13
for more details visit : python4csip.com
(2) % is a wildcard character used with LIKE and it is used for substituting multiple
characters while matching the pattern. Matching text can be of any length
_ (underscore) is also a wildcard character used with LIKE but it substitute only single
character at given position while matching the pattern. Length will be fixed.
Page :14