0% found this document useful (0 votes)
5 views8 pages

Chapter24_Examples

The document contains a series of SQL examples demonstrating various operations on a table named 'project_dept', including creating the table, inserting data, and performing queries with aggregate functions, window functions, and grouping techniques. It also showcases how to manipulate data using sequences, pivoting, and unpivoting techniques. The examples illustrate the use of SQL commands to analyze departmental budgets and employee counts over different periods and conditions.

Uploaded by

riyasathsafran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views8 pages

Chapter24_Examples

The document contains a series of SQL examples demonstrating various operations on a table named 'project_dept', including creating the table, inserting data, and performing queries with aggregate functions, window functions, and grouping techniques. It also showcases how to manipulate data using sequences, pivoting, and unpivoting techniques. The examples illustrate the use of SQL commands to analyze departmental budgets and employee counts over different periods and conditions.

Uploaded by

riyasathsafran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Example 24.

1
USE sample;
CREATE TABLE project_dept
( dept_name CHAR( 20 ) NOT NULL,
emp_cnt INT,
budget FLOAT,
date_month DATE );
Example 24.2
USE sample;
INSERT INTO project_dept VALUES ('Research', 5, 50000, '01.01.2007');
INSERT INTO project_dept VALUES ('Research', 10, 70000, '02.01.2007');
INSERT INTO project_dept VALUES ('Research', 5, 65000, '07.01.2007');
INSERT INTO project_dept VALUES ('Accounting', 5, 10000, '07.01.2007');
INSERT INTO project_dept VALUES ('Accounting', 10, 40000, '02.01.2007');
INSERT INTO project_dept VALUES ('Accounting', 6, 30000, '01.01.2007');
INSERT INTO project_dept VALUES ('Accounting', 6, 40000, '02.01.2008');
INSERT INTO project_dept VALUES ('Marketing', 6, 100000, '01.01.2008');
INSERT INTO project_dept VALUES ('Marketing', 10, 180000, '02.01.2008');
INSERT INTO project_dept VALUES ('Marketing', 3, 100000, '07.01.2008');
INSERT INTO project_dept VALUES ('Marketing', NULL, 120000, '01.01.2008');

Example 24.3
USE sample;
SELECT dept_name, budget,
SUM( emp_cnt ) OVER( PARTITION BY dept_name ) AS emp_cnt_sum,
AVG( budget ) OVER( PARTITION BY dept_name ) AS budget_avg
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research');

Example 24.4
USE sample;
SELECT dept_name, SUM(emp_cnt) AS cnt, AVG( budget ) AS budget_avg
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY dept_name;
Example 24.5
USE sample;
SELECT dept_name, budget, emp_cnt,
SUM(budget) OVER(PARTITION BY dept_name ORDER BY budget) AS sum_dept
FROM project_dept;
Example 24.6
USE sample;
SELECT dept_name, budget, emp_cnt,
SUM(budget) OVER(PARTITION BY dept_name ORDER BY budget
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS sum_dept
FROM project_dept;

Example 24.7
USE sample;
SELECT dept_name, CAST( budget AS INT ) AS budget,
SUM( emp_cnt ) OVER( PARTITION BY budget ) AS emp_cnt_sum,
AVG( budget ) OVER( PARTITION BY dept_name ) AS budget_avg
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research');
Example 24.8
USE sample;
CREATE SEQUENCE Seq START WITH 1 INCREMENT BY 1;
GO
CREATE TABLE T1 (col1 CHAR(10), col2 CHAR(10));
GO
INSERT INTO dbo.T1(col1, col2)
SELECT NEXT VALUE FOR Seq OVER(ORDER BY dept_name ASC), budget
FROM (SELECT dept_name, budget
FROM project_dept
ORDER BY budget, dept_name DESC
OFFSET 0 ROWS FETCH FIRST 5 ROWS ONLY) AS D;
Example 24.9
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_of_budgets
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY dept_name, emp_cnt;

Example 24.10
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_of_budgets
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY CUBE (dept_name, emp_cnt);

-- Alternative way !!
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_of_budgets
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY dept_name, emp_cnt
WITH CUBE;

Example 24.11
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_of_budgets
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY ROLLUP (dept_name, emp_cnt);

Example 24.12
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_b, GROUPING(emp_cnt) gr
FROM project_dept
WHERE dept_name IN ('Accounting', 'Marketing')
GROUP BY ROLLUP (dept_name, emp_cnt);

Example 24.13
USE sample;
SELECT dept_name, YEAR(date_month), SUM(budget),
GROUPING_ID (dept_name, YEAR(date_month)) AS gr_dept
FROM project_dept
GROUP BY ROLLUP (dept_name, YEAR(date_month));

Example 24.14
USE sample;
SELECT dept_name, emp_cnt, SUM(budget) sum_budgets
FROM project_dept
WHERE dept_name IN ('Accounting', 'Research')
GROUP BY GROUPING SETS ((dept_name, emp_cnt),(dept_name));

Example 24.15
USE sample;
SELECT RANK() OVER(ORDER BY budget DESC) AS rank_budget,
dept_name, emp_cnt, budget
FROM project_dept
WHERE budget <= 30000;
Example 24.16
USE sample;
SELECT DENSE_RANK() OVER( ORDER BY budget DESC ) AS dense_rank,
ROW_NUMBER() OVER( ORDER BY budget DESC ) AS row_number,
dept_name, emp_cnt, budget
FROM project_dept
WHERE budget <= 40000;

Example 24.17
USE sample;
SELECT date_month, dept_name, emp_cnt, budget,
RANK() OVER( PARTITION BY date_month ORDER BY emp_cnt desc ) AS rank
FROM project_dept;

Example 24.18
USE sample;
SELECT dept_name, budget,
VAR(budget) OVER(PARTITION BY dept_name) AS budget_var,
STDEV(budget) OVER(PARTITION BY dept_name) AS budget_stdev
FROM project_dept
WHERE dept_name in ('Accounting', 'Research');

Example 24.19
USE sample;
SELECT TOP (4) dept_name, budget
FROM project_dept
ORDER BY budget DESC;

Example 24.20
USE sample;
SELECT dept_name, budget
FROM (SELECT dept_name, budget,
RANK() OVER (ORDER BY budget DESC) AS rank_budget
FROM project_dept) part_dept
WHERE rank_budget <= 4;

Example 24.21
USE sample;
SELECT TOP (25) PERCENT WITH TIES emp_cnt, budget
FROM project_dept
ORDER BY emp_cnt ASC;

Example 24.22
USE sample;
UPDATE TOP (3) project_dept
SET budget = budget * 0.9
WHERE budget in (SELECT TOP (3) budget
FROM project_dept
ORDER BY budget desc);

Example 24.23
USE sample;
DELETE TOP (4)
FROM project_dept
WHERE budget IN
(SELECT TOP (4) budget FROM project_dept
ORDER BY budget ASC);

Example 24.24
USE sample;
SELECT date_month, budget, ROW_NUMBER()
OVER (ORDER BY date_month DESC, budget DESC) as row_no
FROM project_dept
ORDER BY date_month DESC, budget DESC
OFFSET 5 ROWS FETCH NEXT 4 ROWS ONLY;

Example 24.25
USE sample;
SELECT *, ROW_NUMBER()
OVER (ORDER BY date_month DESC, budget DESC) as row_no
FROM (SELECT date_month, budget
FROM project_dept
ORDER BY date_month DESC, budget DESC
OFFSET 5 ROWS FETCH NEXT 4 ROWS ONLY) c;
Example 24.26
USE sample;
SELECT dept_name, budget,
CASE NTILE(3) OVER (ORDER BY budget ASC)
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
END AS groups
FROM project_dept;

Example 24.27
USE sample;
SELECT budget, month(date_month) as month, year(date_month) as year
INTO project_dept_pivot
FROM project_dept;
Example 24.28
USE sample;
SELECT year,
SUM(CASE WHEN month = 1 THEN budget END ) AS January,
SUM(CASE WHEN month = 2 THEN budget END ) AS February,
SUM(CASE WHEN month = 7 THEN budget END ) AS July
FROM project_dept_pivot
GROUP BY year;
Example 24.29
USE sample;
SELECT year, [1] as January, [2] as February, [7] July FROM
(SELECT budget, year, month from project_dept_pivot) p2
PIVOT (SUM(budget) FOR month IN ([1],[2],[7])) AS P;
Example 24.30
USE sample;
CREATE TABLE project_dept_pvt (year int, January float, February float, July float);
INSERT INTO project_dept_pvt VALUES (2007, 80000, 110000, 75000);
INSERT INTO project_dept_pvt VALUES (2008, 50000, 80000, 30000);
--UNPIVOT the table
SELECT year, month, budget
FROM (SELECT year, January, February, July
FROM project_dept_pvt) p
UNPIVOT (budget FOR month IN (January, February, July)
)AS unpvt;
Example 24.31
USE AdventureWorks;
SELECT p.LastName, STRING_AGG(e.EmailAddress,';') Email_list
FROM person.person p JOIN person.EmailAddress e
ON p.BusinessEntityID = e.BusinessEntityID
WHERE p.FirstName = 'Michael'
GROUP BY LastName;
Example 24.32
USE AdventureWorks;
SELECT p.LastName, STRING_AGG(e.EmailAddress,';')
WITHIN GROUP (ORDER BY EmailAddress) Email_list
FROM person.person p JOIN person.EmailAddress e
ON p.BusinessEntityID = e.BusinessEntityID
WHERE p.FirstName = 'Michael'
GROUP BY LastName;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy