LAB 05:
CREATE TABLE student(
studentId INTEGER PRIMARY KEY,
STUname TEXT NOT NULL);
INSERT INTO student VALUES (0001, 'Clark');
INSERT INTO student VALUES (0002, 'Dave');
INSERT INTO student VALUES (0003, 'Ava');
SELECT * FROM student;
CREATE TABLE course(
courseId INTEGER PRIMARY KEY,
Cname TEXT NOT NULL);
INSERT INTO course VALUES (00011, 'CS');
INSERT INTO course VALUES (00022, 'SE');
INSERT INTO course VALUES (00033, 'BBA');
SELECT * FROM course;
union
1)
SELECT studentId FROM student
UNION
SELECT Cname FROM course
ORDER BY studentId;
Union all
2)
SELECT STUname FROM student
UNION ALL
SELECT Cname FROM course
ORDER BY STUname;
Union all with two columns
3)
SELECT STUname,studentId FROM student
UNION ALL
SELECT Cname,courseId FROM course
ORDER BY studentId;
Output:
+-----------+---------+
| studentId | STUname |
+-----------+---------+
| 1 | Clark |
| 2 | Dave |
| 3 | Ava |
+-----------+---------+
+----------+-------+
| courseId | Cname |
+----------+-------+
| 11 | CS |
| 22 | SE |
| 33 | BBA |
+----------+-------+
+-----------+
| studentId |
+-----------+
| 1 |
| 2 |
| 3 |
| BBA |
| CS |
| SE |
+-----------+
+---------+
| STUname |
+---------+
| Ava |
| BBA |
| Clark |
| CS |
| Dave |
| SE |
+---------+
+---------+-----------+
| STUname | studentId |
+---------+-----------+
| Clark | 1 |
| Dave | 2 |
| Ava | 3 |
| CS | 11 |
| SE | 22 |
| BBA | 33 |
+---------+-----------+
Union with two columns
4)
SELECT STUname,studentId FROM student
UNION
SELECT Cname,courseId FROM course
ORDER BY STUname;
+---------+-----------+
| STUname | studentId |
+---------+-----------+
| Ava | 3 |
| BBA | 33 |
| BBA | 44 |
| Clark | 1 |
| CS | 11 |
| Dave | 2 |
| SE | 22 |
+---------+-----------+
GROUP BY:
The GROUP BY statement groups rows that have the same values into
summary rows, like "find the number of customers in each country".
The GROUP BY statement is often used with aggregate functions
(COUNT(), MAX(), MIN(), SUM(), AVG()) to group the result-set by one or
more columns.
1)
SELECT COUNT(studentId), city
FROM student
GROUP BY city;
+------------------+------+
| COUNT(studentId) | city |
+------------------+------+
| 2 | HYD |
| 1 | KHI |
+------------------+------+
2)
CREATE TABLE student(
studentId INTEGER PRIMARY KEY,
STUname TEXT NOT NULL,
age integer,
city integer
);
-- insert
INSERT INTO student VALUES (0001, 'Clark', 20, 000111);
INSERT INTO student VALUES (0002, 'Dave',22, 000222);
INSERT INTO student VALUES (0003, 'Ava',18,000333);
INSERT INTO student VALUES (0004, 'LAKESH',18,000333);
INSERT INTO student VALUES (0005, 'DAva',23,000444);
-- fetch
SELECT * FROM student;
create table city(
cityID INTEGER PRIMARY KEY,
cityNAME TEXT NOT NULL
);
INSERT INTO city VALUES (000111, 'HYD');
INSERT INTO city VALUES (000222, 'KHI');
INSERT INTO city VALUES (000333, 'HYD');
INSERT INTO city VALUES (000444, 'KHI');
SELECT * FROM city;
CREATE TABLE course(
courseId INTEGER PRIMARY KEY,
Cname TEXT NOT NULL);
-- insert
INSERT INTO course VALUES (00011, 'CS');
INSERT INTO course VALUES (00022, 'SE');
INSERT INTO course VALUES (00033, 'BBA');
INSERT INTO course VALUES (00044, 'BBA');
SELECT * FROM course;
SELECT city, COUNT(city)
FROM student
GROUP BY city;
Output:
+-----------+---------+------+------+
| studentId | STUname | age | city |
+-----------+---------+------+------+
| 1 | Clark | 20 | 111 |
| 2 | Dave | 22 | 222 |
| 3 | Ava | 18 | 333 |
| 4 | LAKESH | 18 | 333 |
| 5 | DAva | 23 | 444 |
+-----------+---------+------+------+
+--------+----------+
| cityID | cityNAME |
+--------+----------+
| 111 | HYD |
| 222 | KHI |
| 333 | HYD |
| 444 | KHI |
+--------+----------+
+----------+-------+
| courseId | Cname |
+----------+-------+
| 11 | CS |
| 22 | SE |
| 33 | BBA |
| 44 | BBA |
+----------+-------+
+------+-------------+
| city | COUNT(city) |
+------+-------------+
| 111 | 1 |
| 222 | 1 |
| 333 | 2 |
| 444 | 1 |
+------+-------------+
2)
SELECT c.cityNAME, COUNT(S.city)
FROM student S
INNER JOIN city C ON S.city = C.cityID
GROUP BY C.cityNAME;
(C AND S ARE OBJECTS)
+----------+---------------+
| cityNAME | COUNT(S.city) |
+----------+---------------+
| HYD | 3 |
| KHI | 4 |
+----------+---------------+
3)
SELECT c.cityNAME, COUNT(S.city)
FROM student S
INNER JOIN city C ON S.city = C.cityID
WHERE s.age>21
GROUP BY C.cityNAME;
+----------+---------------+
| cityNAME | COUNT(S.city) |
+----------+---------------+
| KHI | 4 |
+----------+---------------+
HAVING:
IT WORKS AS CONDITION IN GROUP BY:
SELECT c.cityNAME, COUNT(S.city)
FROM student S
INNER JOIN city C ON S.city = C.cityID
WHERE s.age>10
GROUP BY C.cityNAME
having COUNT(S.city) > 1;
+----------+---------------+
| cityNAME | COUNT(S.city) |
+----------+---------------+
| HYD | 3 |
| KHI | 4 |
+----------+---------------+