Chapter6 Examples
Chapter6 Examples
1
USE sample;
SELECT dept_no, dept_name, location
FROM department;
Example 6.2
USE sample;
SELECT dept_name, dept_no
FROM department
WHERE location = 'Dallas';
Example 6.3
USE sample;
SELECT emp_lname, emp_fname
FROM employee
WHERE emp_no >= 15000;
Example 6.4
USE sample;
SELECT project_name
FROM project
Example 6.5
USE sample;
SELECT project_no, emp_no
FROM works_on
WHERE project_no = 'p1'
OR project_no = 'p2';
Example 6.7
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE emp_no = 25348 AND emp_lname = 'Smith'
OR emp_fname = 'Matthew' AND dept_no = 'd1';
Example 6.8
USE sample
SELECT emp_no, emp_lname
FROM employee
WHERE NOT dept_no = 'd2';
Example 6.9
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE emp_no IN (29346, 28559, 25348);
Example 6.10
USE sample;
SELECT emp_no, emp_fname, emp_lname, dept_no
FROM employee
WHERE emp_no NOT IN (10102, 9031);
Example 6.11
USE sample;
SELECT project_name, budget
FROM project
WHERE budget BETWEEN 95000 AND 120000;
Example 6.12
USE sample;
SELECT project_name, budget
FROM project
WHERE budget >= 95000 AND budget <= 120000;
Example 6.13
USE sample;
SELECT project_name
FROM project
WHERE budget NOT BETWEEN 100000 AND 150000;
Example 6.14
USE sample;
SELECT emp_no, project_no
FROM works_on
WHERE project_no = 'p2'
AND job IS NULL;
Example 6.15
USE sample;
SELECT project_no, job
FROM works_on
WHERE job <> NULL;
Example 6.16
USE sample;
SELECT emp_no, ISNULL(job, 'Job unknown') AS task
FROM works_on
WHERE project_no = 'p1';
Example 6.17
USE sample;
SELECT emp_fname, emp_lname, emp_no
FROM employee
WHERE emp_fname LIKE '_a%';
Example 6.18
USE sample;
SELECT *
FROM department
WHERE location LIKE '[C-F]%';
Example 6.19
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE emp_lname LIKE '[^J-O]%'
AND emp_fname LIKE '[^EZ]%';
Example 6.20
USE sample;
SELECT emp_no, emp_fname, emp_lname
FROM employee
WHERE emp_fname NOT LIKE '%n';
Example 6.21
USE sample;
SELECT project_no, project_name
FROM project
WHERE project_name LIKE '%[_]%';
SELECT project_no, project_name
FROM project
WHERE project_name LIKE '%!_%' ESCAPE '!';
Example 6.22
USE sample;
SELECT job
FROM works_on
GROUP BY job;
Example 6.23
USE sample;
SELECT project_no, job
FROM works_on
GROUP BY project_no, job;
Example 6.25
USE sample;
SELECT MIN(emp_no) AS min_employee_no
FROM employee;
Example 6.26
USE sample;
SELECT emp_no, emp_lname
FROM employee
WHERE emp_no =
(SELECT MIN(emp_no)
FROM employee);
Example 6.27
USE sample;
SELECT emp_no
FROM works_on
WHERE enter_date =
(SELECT MAX(enter_date)
FROM works_on
WHERE job = 'Manager');
Example 6.28
USE sample;
SELECT SUM (budget) sum_of_budgets
FROM project;
Example 6.29
SELECT SUM (budget) sum_of_budgets
FROM project
GROUP BY();
Example 6.30
USE sample;
SELECT AVG(budget) avg_budget
FROM project
WHERE budget > 100000;
Example 6.31
USE sample;
SELECT project_no, COUNT(DISTINCT job) job_count
FROM works_on
GROUP BY project_no;
Example 6.32
USE sample;
SELECT job, COUNT(*) job_count
FROM works_on
GROUP BY job;
Example 6.33
USE sample;
SELECT project_no
FROM works_on
GROUP BY project_no
HAVING COUNT(*) < 4;
Example 6.34
USE sample;
SELECT job
FROM works_on
GROUP BY job
HAVING job LIKE 'M%';
Example 6.35
USE sample;
SELECT emp_fname, emp_lname, dept_no
FROM employee
WHERE emp_no < 20000
ORDER BY emp_lname, emp_fname;
Example 6.36
USE sample;
SELECT project_no, COUNT(*) emp_quantity
FROM works_on
GROUP BY project_no
ORDER BY 2 DESC
Example 6.37
USE AdventureWorks;
ORDER BY JobTitle
OFFSET 20 ROWS
Example 6.38
USE sample;
CREATE TABLE product
(product_no INTEGER IDENTITY(10000,1) NOT NULL,
product_name CHAR(30) NOT NULL,
price MONEY);
SELECT IDENTITYCOL
FROM product
WHERE product_name = 'Soap';
Example 6.39
USE sample;
CREATE SEQUENCE dbo.Sequence1
CYCLE;
Example 6.40
USE sample;
SELECT NEXT VALUE FOR dbo.sequence1;
Example 6.41
USE sample;
CREATE TABLE dbo.table1
(column1 INT NOT NULL PRIMARY KEY,
column2 CHAR(10));
Example 6.42
USE sample;
SELECT current_value
FROM sys.sequences
Example 6.43
USE sample;
ALTER SEQUENCE dbo.sequence1
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE;
Example 6.44
USE sample;
SELECT emp_no, emp_fname, emp_lname, dept_no
INTO employee_enh
FROM employee;
ALTER TABLE employee_enh
ADD domicile CHAR(25) NULL;
Example 6.45
USE sample;
SELECT domicile
FROM employee_enh
UNION
SELECT location
FROM department;
Example 6.46
USE sample;
SELECT emp_no
FROM employee
WHERE dept_no = 'd1'
UNION
SELECT emp_no
FROM works_on
WHERE enter_date < '01.01.2017'
ORDER BY 1;
Example 6.47
USE sample;
SELECT emp_no
FROM employee
WHERE dept_no = 'd1'
INTERSECT
SELECT emp_no
FROM works_on
WHERE enter_date < '01.01.2018';
Example 6.48
USE sample;
SELECT emp_no
FROM employee
WHERE dept_no = 'd3'
EXCEPT
SELECT emp_no
FROM works_on
WHERE enter_date > '01.01.2018';
Example 6.49
USE AdventureWorks;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product;
Example 6.50
USE sample;
SELECT project_name,
CASE
WHEN budget > 0 AND budget < 100000 THEN 1
WHEN budget >= 100000 AND budget < 200000 THEN 2
WHEN budget >= 200000 AND budget < 300000 THEN 3
ELSE 4
END budget_weight
FROM project;
USE sample;
SELECT project_name,
CASE
END budget_category
Example 6.51
USE sample;
SELECT emp_fname, emp_lname
FROM employee
WHERE dept_no =
(SELECT dept_no
FROM department
WHERE dept_name = 'Research');
Example 6.52
USE sample;
SELECT *
FROM employee
WHERE dept_no IN
(SELECT dept_no
FROM department
WHERE location = 'Dallas');
Example 6.53
USE sample;
SELECT emp_lname
FROM employee
WHERE emp_no IN
(SELECT emp_no
FROM works_on
WHERE project_no IN
(SELECT project_no
FROM project
WHERE project_name = 'Apollo'));
Example 6.54
USE sample
SELECT DISTINCT emp_no, project_no, job
FROM works_on
WHERE enter_date > ANY
(SELECT enter_date
FROM works_on)
Example 6.55
USE sample;
CREATE TABLE #project_temp
(project_no CHAR(4) NOT NULL,
project_name CHAR(25) NOT NULL);
Example 6.56
USE sample;
SELECT project_no, project_name
INTO #project_temp
FROM project;
Example 6.57
Explicit join syntax:
USE sample
SELECT employee.*, department.*
FROM employee INNER JOIN department
USE sample;
SELECT employee.*, department.*
FROM employee, department
WHERE employee.dept_no = department.dept_no;
Example 6.58
Explicit join syntax:
USE sample;
SELECT emp_no, project.project_no, job, enter_date, project_name, budget
FROM works_on JOIN project
ON project.project_no = works_on.project_no
WHERE project_name = 'Gemini';
USE sample;
SELECT emp_no, project.project_no, job, enter_date, project_name, budget
FROM works_on, project
WHERE project.project_no = works_on.project_no
AND project_name = 'Gemini';
Example 6.59
USE sample;
SELECT dept_no
FROM employee JOIN works_on
ON employee.emp_no = works_on.emp_no
WHERE enter_date = '10.15.2017';
Example 6.60
USE sample;
SELECT emp_fname, emp_lname
FROM works_on JOIN employee ON works_on.emp_no=employee.emp_no
JOIN department ON employee.dept_no=department.dept_no
AND location = 'Seattle'
AND job = 'analyst';
Example 6.61
USE sample;
SELECT DISTINCT project_name
FROM project JOIN works_on
ON project.project_no = works_on.project_no
JOIN employee ON works_on.emp_no = employee.emp_no
JOIN department ON employee.dept_no = department.dept_no
WHERE dept_name = 'Accounting';
Example 6.62
USE sample;
SELECT employee.*, department.*
FROM employee CROSS JOIN department;
Example 6.63
USE sample;
SELECT employee_enh.*, department.location
FROM employee_enh JOIN department
ON domicile = location;
Example 6.64
USE sample;
SELECT employee_enh.*, department.location
FROM employee_enh LEFT OUTER JOIN department
ON domicile = location;
Example 6.65
USE sample;
SELECT employee_enh.domicile, department.*
FROM employee_enh RIGHT OUTER JOIN department
ON domicile =location;
Example 6.66
USE sample;
SELECT employee_enh.*, department.location
FROM employee_enh JOIN department
ON domicile = location
UNION
SELECT employee_enh.*, 'NULL'
FROM employee_enh
WHERE NOT EXISTS
(SELECT *
FROM department
WHERE location = domicile);
Example 6.67
USE sample;
SELECT emp_fname, emp_lname, domicile, location
FROM employee_enh JOIN department
ON domicile < location;
Example 6.68
USE sample;
SELECT t1.dept_no, t1.dept_name, t1.location
FROM department t1 JOIN department t2
ON t1.location = t2.location
WHERE t1.dept_no <> t2.dept_no;
Example 6.69
USE sample;
SELECT emp_no, emp_lname, e.dept_no
FROM employee e JOIN department d
ON e.dept_no = d.dept_no
WHERE location = 'Dallas';
Example 6.70
USE sample;
SELECT emp_lname
FROM employee
WHERE 'p3' IN
(SELECT project_no
FROM works_on
WHERE works_on.emp_no = employee.emp_no);
Example 6.71
USE sample;
SELECT emp_lname
FROM employee
WHERE EXISTS
(SELECT *
FROM works_on
WHERE employee.emp_no = works_on.emp_no
AND project_no = 'p1');
Example 6.72
USE sample;
SELECT emp_lname
FROM employee
WHERE NOT EXISTS
(SELECT *
FROM department
WHERE employee.dept_no = department.dept_no
AND location = 'Seattle');
Example 6.73
USE sample
SELECT emp_no, enter_date
FROM works_on
WHERE enter_date = (SELECT min(enter_date)
FROM works_on)
Example 6.74
USE sample;
SELECT employee.emp_no, emp_lname, job
FROM employee, works_on
WHERE employee.emp_no = works_on.emp_no
AND enter_date = '10.15.2017';
Example 6.76
USE sample;
SELECT enter_month
FROM (SELECT MONTH(enter_date) as enter_month
FROM works_on) AS m
GROUP BY enter_month;
Example 6.77
USE sample;
SELECT w.job, (SELECT e.emp_lname
FROM employee e WHERE e.emp_no = w.emp_no) AS name
FROM works_on w
WHERE w.job IN ('Manager', 'Analyst');
Example 6.78
USE AdventureWorks;
SELECT SalesOrderID
FROM Sales.SalesOrderHeader
WHERE TotalDue > (SELECT AVG(TotalDue)
FROM Sales.SalesOrderHeader
WHERE YEAR(OrderDate) = '2002')
AND Freight > (SELECT AVG(TotalDue)
FROM Sales.SalesOrderHeader
WHERE YEAR(OrderDate) = '2002')/2.5;
Example 6.79
USE AdventureWorks;
WITH price_calc(year_2002) AS
(SELECT AVG(TotalDue)
FROM Sales.SalesOrderHeader
WHERE YEAR(OrderDate) = '2002')
SELECT SalesOrderID
FROM Sales.SalesOrderHeader
WHERE TotalDue > (SELECT year_2002 FROM price_calc)
AND Freight > (SELECT year_2002 FROM price_calc)/2.5;
Example 6.80
USE sample;
CREATE TABLE airplane
(containing_assembly VARCHAR(10),
contained_assembly VARCHAR(10),
quantity_contained INT,
unit_cost DECIMAL (6,2));
insert into airplane values ( 'Airplane', 'Fuselage',1, 10);
insert into airplane values ( 'Airplane', 'Wings', 1, 11);
insert into airplane values ( 'Airplane', 'Tail',1, 12);
insert into airplane values ( 'Fuselage', 'Cockpit', 1, 13);
insert into airplane values ( 'Fuselage', 'Cabin', 1, 14);
insert into airplane values ( 'Fuselage', 'Nose',1, 15);
insert into airplane values ( 'Cockpit', NULL, 1,13);
insert into airplane values ( 'Cabin', NULL, 1, 14);
insert into airplane values ( 'Nose', NULL, 1, 15);
insert into airplane values ( 'Wings', NULL,2, 11);
insert into airplane values ( 'Tail', NULL, 1, 12);
Example 6.81
USE sample;
WITH list_of_parts(assembly1, quantity, cost) AS
(SELECT containing_assembly, quantity_contained, unit_cost
FROM airplane
WHERE contained_assembly IS NULL
UNION ALL
SELECT a.containing_assembly, a.quantity_contained,
CAST(l.quantity*l.cost AS DECIMAL(6,2))
FROM list_of_parts l,airplane a
WHERE l.assembly1 = a.contained_assembly )
SELECT * FROM list_of_parts;
Example 6.82
USE sample;
WITH list_of_parts(assembly, quantity, cost) AS
(SELECT containing_assembly, quantity_contained, unit_cost
FROM airplane
WHERE contained_assembly IS NULL
UNION ALL
SELECT a.containing_assembly, a.quantity_contained,
CAST(l.quantity*l.cost AS DECIMAL(6,2))
FROM list_of_parts l,airplane a
WHERE l.assembly = a.contained_assembly )
SELECT assembly, SUM(quantity) parts, SUM(cost) sum_cost
FROM list_of_parts
GROUP BY assembly;