DatabaseExercise-2
DatabaseExercise-2
1
1.
2.
3.
a.
SELECT
StdName,
Enrollment.
OfferNo,
EnrGrade
FROM
Enrollment JOIN Offering
ON Enrollment.OfferNo=Offering.OfferNo
WHERE
EnrGrade>=3.5
AND
OffTern=1
AND
OffYear=2020;
b.
SELECT
StdName,
Enrollment.OfferNo
FROM
Enrollment JOIN Offering
ON Enrollment.OfferNo=Offering.OfferNo
WHERE
EnrGrade>3.7
AND
OffTern=1
AND
OffYear=2020;
c.
SELECT
OfferNo,
O.CrsNo,
OffDay,
OffLocation,
OffTime
FROM ((Offering O
JOIN Course C
ON O.CrsNo=C.CrsNo)
JOIN Lecturer L
ON O.LecID=L.LecID)
WHERE
LecName="Nguyen Thi Hoa"
AND
OffTern=1
AND
OffYear=2021;
d.
SELECT
StdName,
E.OffNo
FROM
(Enrollment E
JOIN
Student S
ON E.StdID=S.StdID)
JOIN
Offering O
ON E.OfferNo=O.OfferNo
WHERE
StdMajor LIKE “EM%”
AND
EnrGrade>3.7
AND
OffTern=1
AND
OffYear=2022;
e.
SELECT
Student.StdID,
Student.StdName,
Enrollment.EnrGrade
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
JOIN
Student ON Enrollment.StdID = Student.StdID
WHERE
Student.StdClass = 'Math 1' AND Course.CrsDesc = 'Algebra';
f.
SELECT
Student.StdID,
Student.StdName
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
JOIN
Student ON Enrollment.StdID = Student.StdID
WHERE
Course.CrsDesc = 'Algebra' AND Offering.OffTerm = '20221' AND
Enrollment.EnrGrade < 4;
g.
SELECT
MAX(Enrollment.EnrGrade) AS HighestGrade
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
JOIN
Student ON Enrollment.StdID = Student.StdID
WHERE
Student.StdClass = 'Math 1' AND Course.CrsDesc = 'Algebra';
h.
SELECT
AVG(Enrollment.EnrGrade) AS AverageGrade
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
WHERE
Course.CrsDesc = 'Algebra' AND Offering.OffTerm = '20221';
i.
SELECT
COUNT(Enrollment.StdID) AS NumberOfFails
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
WHERE
Course.CrsDesc = 'Algebra' AND Offering.OffTerm = '20221' AND
Enrollment.EnrGrade < 4;
j.
SELECT
Offering.CrsNo,
COUNT(Enrollment.StdID) AS NumberOfFails
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
WHERE
Offering.OffTerm = '20221' AND Enrollment.EnrGrade < 4
GROUP BY
Offering.CrsNo;
k.
SELECT
Offering.OffTerm,
COUNT(Enrollment.StdID) AS NumberOfFails
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
WHERE
Offering.OffTerm = '20221' AND Enrollment.EnrGrade < 4
GROUP BY
Offering.OffTerm;
l.
SELECT
Course.CrsNo,
Course.CrsDesc,
COUNT(Enrollment.StdID) AS NumberOfFails
FROM
Enrollment
JOIN
Offering ON Enrollment.OfferNo = Offering.OfferNo
JOIN
Course ON Offering.CrsNo = Course.CrsNo
WHERE
Offering.OffTerm = '20021' AND Enrollment.EnrGrade < 4
GROUP BY
Course.CrsNo, Course.CrsDesc
HAVING
COUNT(Enrollment.StdID) > 100;
Exercise 2.2
Câu 1 và 2 làm tương tự phần 2.1
3.
a.
SELECT
ProID,
ProName,
Price
FROM
PRODUCTS
WHERE
Price >= 1000000;
b.
SELECT
ProID,
ProName
FROM
PRODUCTS
WHERE
InStock = 0;
c.
SELECT DISTINCT
P.ProID,
P.ProName
FROM
PRODUCTS P
JOIN ORDERDETAILS OD
ON P.ProID = OD.ProID
JOIN ORDERS O
ON OD.OrdNum = O.OrdNum
WHERE
O.OrdDate BETWEEN '2022-10-01' AND '2022-10-31';
d.
SELECT
C.CusName,
C.Phone
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
WHERE
O.OrdDate = '2022-10-10';
e.
SELECT DISTINCT
C.CusID,
C.CusName
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
WHERE
O.OrdDate = '2022-10-10'
AND
O.PurchaseAmt >= 1000000;
f.
SELECT DISTINCT
C.CusID,
C.CusName
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
JOIN ORDERDETAILS OD
ON O.OrdNum = OD.OrdNum
WHERE
OD.ProID = 'P1'
AND
OD.Quantity > 10;
g.
SELECT DISTINCT
C.CusID,
C.CusName
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
JOIN ORDERDETAILS OD
ON O.OrdNum = OD.OrdNum
JOIN PRODUCTS P
ON OD.ProID = P.ProID
WHERE
P.ProName = 'Pencil'
AND
OD.Quantity > 10;
h.
SELECT
P.ProID,
P.ProName
FROM
PRODUCTS P
WHERE
P.ProID NOT IN (
SELECT DISTINCT
OD.ProID
FROM
ORDERDETAILS OD
JOIN ORDERS O
ON OD.OrdNum = O.OrdNum
WHERE
O.OrdDate BETWEEN '2022-10-01' AND '2022-10-31'
);
i.
SELECT DISTINCT
C.CusName,
C.Phone
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
JOIN ORDERDETAILS OD1
ON O.OrdNum = OD1.OrdNum
JOIN ORDERDETAILS OD2
ON O.OrdNum = OD2.OrdNum
WHERE
OD1.ProID = 'P1'
AND
OD2.ProID = 'P2';
j.
SELECT
SUM(OD.Quantity * OD.UnitPrice) AS SalesRevenue
FROM
ORDERDETAILS OD
JOIN ORDERS O
ON OD.OrdNum = O.OrdNum
WHERE
O.OrdDate = '2024-10-20';
k.
SELECT
COUNT(O.OrdNum) AS TotalOrders,
SUM(OD.Quantity * OD.UnitPrice) AS TotalRevenue
FROM
ORDERS O
JOIN ORDERDETAILS OD
ON O.OrdNum = OD.OrdNum
WHERE
O.OrdDate BETWEEN '2024-10-01' AND '2024-10-31';
l.
SELECT
C.CusID,
C.CusName,
COUNT(O.OrdNum) AS NumberOfOrders
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
GROUP BY
C.CusID,
C.CusName;
m.
SELECT
C.CusID,
C.CusName,
SUM(O.PurchaseAmt) AS TotalPurchaseAmount
FROM
CUSTOMERS C
JOIN ORDERS O
ON C.CusID = O.CusID
GROUP BY
C.CusID,
C.CusName;
n.
SELECT
P.ProID,
P.ProName,
SUM(OD.Quantity) AS TotalQuantitySold
FROM
PRODUCTS P
JOIN ORDERDETAILS OD
ON P.ProID = OD.ProID
JOIN ORDERS O
ON OD.OrdNum = O.OrdNum
WHERE
'2024-10-01' AND '2024-10-31'
GROUP BY
P.ProID,
P.ProName;
o.
SELECT
P.ProID,
P.ProName,
SUM(OD.Quantity * OD.UnitPrice) AS TotalRevenue
FROM
PRODUCTS P
JOIN ORDERDETAILS OD
ON P.ProID = OD.ProID
JOIN ORDERS O
ON OD.OrdNum = O.OrdNum
WHERE
O.OrdDate BETWEEN '2024-10-01' AND '2024-10-31'
GROUP BY
P.ProID,
P.ProName
HAVING
TotalRevenue < 10000000;