Like this document? Why not share!

# Sql wksht-5

## by Mukesh Tekwani, Academics at Mumbai on Jun 11, 2011

• 1,070 views

SQL

SQL

### Views

Total Views
1,070
Views on SlideShare
1,070
Embed Views
0

Likes
0
32
0

No embeds

## Sql wksht-5Document Transcript

• SQL Simple Queries – WK5 SQL Queries - Basics Worksheet - 51 Get the last name and first name of all authors whose lastname has 5 or more characters. SELECT LNAme, FName FROM Authors WHERE LEN(Lname) >= 52 Find the Employee number, Sales, and DeptID of each employee. If the employee has no sales, then four dashes should be printed SELECT EmpID, IFNULL(Sales, ‘----‘), DeptID FROM Employee3 Find the cities that repeat in the Authors table. SELECT CITY FROM AUTHORS GROUP BY CITY HAVING COUNT(*) > 1 ORDER BY CITY4 Find all the cities where the company has customers. SELECT CITY FROM AUTHORS GROUP BY CITY ORDER BY CITY5 Find the names of employees who joined the company 22 years or later after they were born. SELECT EMPID, LNAME FROM EMPLOYEE WHERE YEAR(DOB) + 22 >= YEAR(DOJ)6 Find the EmpID of all male workers born before Jan 1, 1990. SLEECT EmpID FROM Employee WHERE Gender = ‘M’ AND YEAR(DOB) < 19907 Find the names of all employees who do not live in ‘Mumbai’. SELECT LName FROM Employee WHERE City <> ‘Mumbai’8 Find the employee number of all employees born between 1-1-1980 and 1-1-1990 SELECT EmpID FROM Employee WHERE DOB >= ’01-01-1980’ AND DOB <= ’01-01-1990’Prof. Mukesh N. Tekwani Page 1 of 14
• SQL Simple Queries – WK 5 This can also be written as : SELECT EmpID FROM Employee WHERE DOB BETWEEN ’01-01-1980’ AND ’01-01-1990’9 Find the names of employees who have worked in one of the following depts.: Sales, Mktg, Accounts, PR. SELECT LNAme FROM Employee WHERE Dept IN (‘Sales’, ‘Mktg’, ‘Accounts’, ‘PR’)10 Find the names of all employees whose lastname starts with C. SELECT LName FROM Employee WHERE LNAME LIKE ‘C%’11 Find the names of all employees whose lastname ends with C. SELECT LName FROM Employee WHERE LNAME LIKE ‘%C’12 Find the names of all employees whose lastname has the penultimate letter ‘e’. SELECT LName FROM Employee WHERE LNAME LIKE ‘%e_’13 Find the names of all employees whose lastname has the letter ‘e’. SELECT LName FROM Employee WHERE LNAME LIKE ‘%#e%’ ESCAPE #14 Wildcard explained The LIKE operator allows us to perform basic pattern-matching using wildcard characters. Wildcard Description _ (underscore) matches any single character % matches a string of one or more characters matches any single character within the specified range (e.g. [a-f]) or [] set (e.g. [abcdef]). matches any single character not within the specified range (e.g. [^a- [^] f]) or set (e.g. [^abcdef]). Examples: • WHERE FirstName LIKE _im finds all three-letter first names that end with im (e.g. Jim, Tim). • WHERE LastName LIKE %stein finds all employees whose last name ends with steinPage 2 of 14 mukeshtekwani@hotmail.com
• SQL Simple Queries – WK5 • WHERE LastName LIKE %stein% finds all employees whose last name includes stein anywhere in the name. • WHERE FirstName LIKE [JT]im finds three-letter first names that end with im and begin with either J or T (that is, only Jim and Tim) • WHERE LastName LIKE m[^c]% finds all last names beginning with m where the following (second) letter is not c. For Q 15 to Q 27, the table structure is : Sales_Header (OrderNo , OrderDate , CustomerID , Salesmanid , PaymentStatus , TransactionType) Sales_Detail(OrderNo , ProductID , Qty , Rate, Amt)15 Display the orders that were issued in the first quarter of the current year. (Nov 04) SELECT Orderno FROM Orders WHERE MONTH(Orderdate) < 4 AND YEAR(Orderdate) = YEAR(GETDATE())16 Display the order number, order date , customer name and order amount for orders having value of Rs 500 and above. (Nov 04) SELECT Orderno, Orderdate, Customer_Name, Amt FROM Sales_Header H, Sales_Detail D WHERE H.Orderno = D.Orderno AND Amt >= 50017 Display the order detail where RIN001 soap is sold for minimum of Rs 50 (Nov 04) SELECT Sales_Header.* FROM Sales_Header H, Sales_Detail D WHERE H.Orderno = D.Orderno AND Productid = ’RIN001’ AND Rate >= 5018 Display the order collected by Executive no. ‘S120’ Nov 04 SELECT O.Orderid , D.Productid, D.Quantity FROM Orders O, [Order Details] D WHERE O.Orderid = D.Orderid AND O.Employeeid = ‘S120’19 Assign the privileges to see the data from both tables to ‘Raj’. Nov 04 GRANT SELECT ON SALES_HEADER, SALES_DETAILS TO RAJ20 Grant the INSERT and UPDATE privileges to Raj, for all columns in the SALES_DETAILS table. GRANT INSERT, UPDATE ON SALES_DETAILS TO RAJ21 Display the various types of product sold to Customers. Nov 04Prof. Mukesh N. Tekwani Page 3 of 14
• SQL Simple Queries – WK 5 SELECT DISTINCT Productid FROM SalesDetails22 Display all Credit transactions , with their payment status done in Dec 2003. SELECT * FROM SALES_HEADER WHERE TRANSACTIONTYPE = ‘CREDIT’ AND PAYMENTSTATUS = ’PAID’ AND MONTH(ORDERDATE) = 12 AND YEAR(ORDERDATE) = 200323 Display the details of total cash transactions done by each sales executive. SELECT * FROM Sales_Header GROUP BY Salesmanid HAVING TransactionType = ’Cash’24 Update salary of employee ‘Raj’ by giving him the salary of ‘Radha’ working in same company. Nov 04 UPDATE Emp SET salary = (SELECT salary FROM Emp WHERE Ename = ’Radha’) WHERE Ename = ’Raj’ AND Compid = (SELECT compid FROM emp WHERE ename=’Radha’)25 Display how many male and female members have joined in January 2004. Nov 04 SELECT COUNT (ename) FROM emp GROUP BY gender HAVING TO_CHAR(joindate,’mon-yyyy’) = ’JAN-2004’26 Display the total number of customers. SELECT COUNT(customerId) FROM customers27 Display the total number of customers located in each city. Nov 04 The city with maximum number of customers should be at the top of the list. SELECT count(customerid) , city FROM customers GROUP BY city ORDER BY 1 DESC Assume the following table structure: Emp (Empid , ename, city, CompID , salary , Joindate ) Company (CompID , CompName , City)28 Give name of companies located in those cities where ‘TATA’ is located. Nov 04 SELECT Companyname FROM companyPage 4 of 14 mukeshtekwani@hotmail.com
• SQL Simple Queries – WK5 WHERE city IN (SELECT city FROM company WHERE companyName = ’TATA’)29 Give the names of the employees living in the same city where their company is located. Nov 04 SELECT ename FROM Emp e, company c WHERE e.city = c.city30 Display all customers who stay in the same city as the employees. SELECT c.customerid, e.employeeid FROM customers c, employees e WHERE c.city = e.city Consider the following table structure for questions below: Book (BookID , Title , Author , Publisher , Year , Price , DistID) Distributors (DistID , Name , City) Nov 0431 Find the title and price of the most expensive book(s). SELECT Title, Price FROM Book WHERE price = (SELECT MAX(Price) FROM Titles)32 Display the details of books whose price is more than the average price of all books. Nov 04 SELECT * FROM book WHERE Price > (SELECT AVG (Price) FROM book )33 Display the details of books written by ‘Groff’ and supplied by ‘TMH’ Nov 04 SELECT * FROM book WHERE Author = ’Groff’ AND Publisher = ’TMGH’34 Create a view to show the Title, Author, Publisher and Distributer’s Name & name this view as ShowDetails. Display the records held in this view. Nov 04 CREATE VIEW ShowDetails AS SELECT title, author, publisher, distributor FROM book35 Create the table RIVERS according to the description shown below. Attribute Data type Constraint Name Upto 20 characters long Unique and not null Length Upto 4 digits Values between 100 and 4160 Outflow Upto 20 characters long Required CREATE TABLE riverProf. Mukesh N. Tekwani Page 5 of 14
• SQL Simple Queries – WK 5 (Name VARCHAR(20) UNIQUE NOT NULL, Length NUMERIC CHECK (LENGTH BETWEEN 101 AND 4160), Outflow VARCHAR(20) NOT NULL)36 Add a new column called Maxdepth to the rivers table. Make sure that the values of this column range from 100 to 250 feet. ALTER TABLE river ADD maxdepth NUMERIC CHECK (maxdepth BETWEEN 100 AND 250)37 Create table ‘CITY’ With the following fields: Field Data type Constraint CID INTEGER PRIMARY KEY CNAME Upto 20 char State 2 char Latitude Number Longitude Number CREATE TABLE city ( CId INTEGER PRIMARY KEY, CName VARCHAR(20), State CHAR(2), Latitude NUMERIC(5), Longitude NUMERIC(5) )38 Create table DATA with following fields: Field Data type Constraint CID Integer Foreign Key Matching City Id MONTH Integer Must Be Between 1 And 12 TEMP_F Number Must Be Between -80 And 150 Rain_I Number Must be between 0 and 100 (ID+MONTH) Primary key CREATE TABLE data ( CID INTEGER, Month INTEGER CHECK(month BETWEEN 1 AND 12), Temp_f NUMERIC(3) CHECK(temp_f BETWEEN -80 AND 150), Rain_i NUMERIC(3) CHECK(rain_i BETWEEN 0 AND 100), PRIMARY KEY (CID, MONTH), CONSTRAINT fkey FOREIGN KEY(CID) REFERENCES city )39 List the temperatures for July from table Data, Lowest temperatures first, picking up city name and latitude by joining with the table city. SELECT Temp_f, cname, Latitude FROM Data d, City c WHERE d.cId = c.cId AND month = 7 ORDER BY Temp_f ASCPage 6 of 14 mukeshtekwani@hotmail.com
• SQL Simple Queries – WK540 List (using Subquery) the cities with year round average temperature above 50 degrees. SELECT name FROM City WHERE Id IN ( SELECT cid FROM Data WHERE 50 < All (SELECT avg(temp_f) FROM data GROUP BY CID) ) Note: When the ANY clause is used, a value from the current row is compared to each result set of the subquery using the comparison operator. If any of the comparisons are true, the entire comparison is considered to be true. The ALL clause is similar to the ANY clause except that after the value is compared to all the items returned by the subquery, if any of the comparisons is false, the entire clause is false. That is, if there is a comparison based on equality, the value on the left of the comparison must be equal to every item in the result set for the ALL clause to evaluate to true. Consider the following tables and answer the queries that follow: CUSTOMER Attribute Data Type Constraints Custid Varchar(2) Primary key Lname Varchar(15) Fname Varchar(15) Area Varchar(2) Phone Number(8) MOVIE Attribute Datatype Constraints Mvno Number(2) Primary key Title Varchar(25) Type Varchar(10) Star Varchar(25) Price Number(8,2) INVOICE Attribute Datatype Constraints Invno Varchar(3) Primary key Mvno Number(2) Foreign key movie(mvno) Custid Varchar(3) Foreign Key customer(custid) Issue date Date Return date Date41 Find out the movies that cost more than 159 and also find the new cost as original cost*15 SELECT mvno, price*15 “NEW COST” FROM movieProf. Mukesh N. Tekwani Page 7 of 14
• SQL Simple Queries – WK 5 WHERE price > 15942 Print the names and types of all the movies except horror movies. SELECT title, type FROM movie WHERE type NOT IN(‘horror’)43 List the various movie types available SELECT DISTINCT type FROM movie44 List the mvno, title of movies whose stars begin with the letter ’m’ SELECT mvno, title, type FROM movie WHERE star LIKE ‘m%’45 Determine the maximum and minimum of price. Rename the columns as max- price and min_price respectively. SELECT MAX(price) “max_price”, MIN(price) “min_price” FROM movie46 Find out number of movies in each type, SELECT COUNT (type) FROM movie GROUP BY type47 Print the information of invoice table in the following format for all records. The invoice no of customer id.{ custid} is { invno} and movie no is { movno} SELECT ‘The invoice no of customer id : ’, custid, ’is ‘, invno, ‘ and movie No. is ‘, movno FROM invoice48 Display the month(in alphabets) in which customers are supposed to return the movies SELECT MONTH(returnDate) FROM Invoice49 Delete all records having return date before 10th July ‘05 DELETE FROM invoice WHERE returndate < ’10-JUL-05’50 Find out if the movie starring ‘Tom Cruise’ is issued to any customer and list the custid to whom it is issued SELECT custid FROM invoice, movie WHERE invoice.mvno = movie.mvno AND movie.star LIKE ‘Tom Cruise’51 Find the names of customers who have been issued movie of type ’drama’.Page 8 of 14 mukeshtekwani@hotmail.com
• SQL Simple Queries – WK5 SELECT Fname, ’ ‘, lname, “Name” FROM customer c, movie M, invoice i WHERE c.custid = i.custid AND m.mvno = i.mvno AND m.type LIKE ‘drama’52 Find out the title of the movies that have been issued to the customer whose Fname is’ Mary’ SELECT title FROM customer, movie, invoice WHERE customer.custid = invoice.custid AND Movie.mvno = invoice.mvno AND Customer.Fname LIKE ‘Mary’53 Add a column Remark of type varchar and size 25 to the invoice table ALTER TABLE invoice ADD (Remark VARCHAR(25))54 Find the names of all customers having ‘a’ in the second letter in their fname. SELECT Fname, lname FROM customer WHERE fname LIKE ’_a%’55 Find out the movie number which has been issued to customer whose first name is ‘IVAN’ SELECT i.mvno FROM customer c, invoice I WHERE c.custid = i.custid AND fname LIKE ‘IVAN’56 Display the title, Lname, Fname for customers having movie number greater than or equal to three in the following format. The movie taken by { Fname} { Lname} is { Title} SELECT ‘The movie taken by’, Fname, ‘ ‘, Lname, ’ is ‘, Title FROM customer c, movie m, invoice i WHERE c.custid = i.custid AND m.mvno = i.mvno AND m.mvno >= 357 Find the second highest sales. SELECT MAX(sales) WHERE sales NOT IN (SELECT MAX(sales) FROM sales) Answer the following questions based on the following tables: Student ( sid number, sname varchar, previous_percentage number, aptitude_test_status number, grade char)58 Write an ALTER TABLE statement that defines a single CHECK constraints for the following: Column previous_percentage must be a value between 40 to 100. ALTER TABLE Student MODIFY Previous_percentage NUMERIC(5) CHECK (Previous_percentage between 40 and 100)59 Make the sid column unique.Prof. Mukesh N. Tekwani Page 9 of 14
• SQL Simple Queries – WK 5 ALTER TABLE Student ADD CONSTRAINT ID_UNIQ UNIQUE (sid)60 Add a column called TestDate with default value as today’s date. ALTER TABLE Student ADD TestDate datetime DEFAULT (GETDATE())61 Aptitude_test_status must be a value in between 60 to 100. ALTER Table Student ADD Check (Aptitude_test_status BETWEEN 60 AND 100)62 The grade column should allow values ‘a’, ’b’ and ‘c’ only. ALTER TABLE Student ADD CHECK (grade IN (a, b, c)) Following queries are based on these tables: Supplier (sno, sname, status, city) Parts (pno, pname, color, weight, city) Shipment (sno, pno, quantity, sdate)63 Change the status of each supplier to its double for suppliers in ‘Mumbai’. UPDATE supplier SET status = status * 2 WHERE city = Mumbai64 Get the sno for suppliers with status less than current maximum status in the supplier table. First we form the subquery to find the maximum status, as follows: SELECT MAX(status) FROM supplier Now, the complete query is : SELECT sno FROM supplier WHERE status < (SELECT MAX(status)FROM supplier)65 Create a view of Suppliers whose status is above 2. CREATE VIEW suppliers_view (sno,sname,status,city) AS SELECT * FROM supplier WHERE status > 266 Get all parts whose weight is 10, 20 or 30. SELECT pno, pname FROM parts WHERE weight IN (10,20,30)67 Get sname for suppliers who do not supply at least one part. SELECT sname FROM supplier s, shipment sh WHERE s.sno = sh.sno AND s.sno NOT IN (SELECT DISTINCT sno FROM shipment)Page 10 of 14 mukeshtekwani@hotmail.com
• SQL Simple Queries – WK5 The following queries are based on the following tables: Employee (ecode, ename, salary, status, deptno, city) Dept(deptno, dname, city) Product (pno, sno, pname, unitsinstock, unitprice) Order(ono, pno, quantity, odate)68 Create the Employee table CREATE TABLE employee ( ecode INTEGER, ename VARCHAR(50), salary MONEY, status CHAR, deptno INTEGER, city VARCHAR(20) )69 Alter the table to add a column for qualifications. ALTER TABLE Employee ADD qual VARCHAR(20)70 Alter the table to drop the qual column. ALTER TABLE Employee DROP COLUMN qual71 Alter the table to add a column pfnum which is unique (add a column with a constraint) ALTER TABLE Employee ADD pfnum INTEGER CONSTRAINT ct_pfnum UNIQUE72 Alter the table to add a column totalsalary with the constraint that this cannot be greater than 10000. ALTER TABLE employee ADD totalsalary MONEY CONSTRAINT maxsal CHECK (totalsalary <= 10000)73 Alter the employee table so that the ecode is less than 100 ALTER TABLE employee ADD CONSTRAINT validecode CHECK (ecode <= 100)74 Remove the constraint on ecode. ALTER TABLE employee DROP CONSTRAINT validecode75 Add a constraint that the dept code can be one of 11, 22, 33, 44 or 55. ALTER TABLE employee ADD CONSTRAINT validdept CHECK (deptno in(11, 22, 33, 44, 55))Prof. Mukesh N. Tekwani Page 11 of 14
• SQL Simple Queries – WK 576 Multiple check constraints: Assume there is a column called ‘SalaryType’ (Hourly, Monthly, Annual). Create a single constraint that checks both the salary and the salary type ALTER TABLE Payroll ADD CONSTRAINT CK_Payroll CHECK (SalaryType in (Hourly,Monthly,Annual) AND (Salary > 100 AND Salary < 150000)77 Add the following constraint in a single ALTER statement: If SalaryType is Hourly, salary must be less than 100. If SalaryType is Monthly, salary must not be more than 10000 If SalaryType is Annual, any salary amount is valid. ALTER TABLE Payroll ADD CONSTRAINT CK_Payroll CHECK ( (SalaryType = Hourly AND Salary < 100.00) OR (SalaryType = Monthly AND Salary < 10000.00) OR (SalaryType = Annual) )78 Alter the table so that the SalaryType is not null and SalaryType is one of these: Hourly, Monthly, Annual. ALTER TABLE Payroll ADD CONSTRAINT CK_Payroll CHECK ( (SalaryType IN (Hourly,Monthly,Annual)) AND SalaryType IS NOT NULL )79 Write an ALTER table statement that allows only the following cities: ‘BOSTON’, ‘DALLAS’, and ‘AUSTIN’ ALTER TABLE employee ADD CONSTRAINT validcity CHECK (CITY IN (BOSTON, DALLAS, AUSTIN))80 Define a view for Sue (employee number 102) containing only orders placed by customers assigned to her. (horizontal view) CREATE VIEW SUEORDERS AS SELECT * FROM ORDERS WHERE CUST IN (SELECT CUST_NUM FROM CUSTOMERS WHERE CUST_REP = 102)Page 12 of 14 mukeshtekwani@hotmail.com