D.
Consider the schema for College Database:
STUDENT (USN, SName, Address, Phone, Gender)
SEMSEC (SSID, Sem, Sec)
CLASS (USN, SSID)
SUBJECT (Subcode, Title, Sem, Credits)
IAMARKS (USN, Subcode, SSID, Test1, Test2, Test3, FinalIA)
Write SQL queries to
1. List all the student details studying in fourth semester ‘C’ section.
2. Compute the total number of male and female students in each semester and in each section.
3. Create a view of Test1 marks of student USN ‘1BI15CS101’ in all subjects.
4. Calculate the FinalIA (average of best two test marks) and update the corresponding table for all students.
5. Categorize students based on the following criterion:
If FinalIA = 17 to 20 then CAT = ‘Outstanding’ If FinalIA = 12 to 16 then CAT = ‘Average’
If FinalIA< 12 then CAT = ‘Weak’
Give these details only for 8th semester A, B, and C section students.
Schema:
Table Creation
SQL> CREATE TABLE STUDENT (
USN VARCHAR (10) PRIMARY KEY, SNAME VARCHAR (25),
ADDRESS VARCHAR (25), PHONE NUMBER (10), GENDER CHAR (1));
Table created.
SQL> CREATE TABLE SEMSEC (
SSID VARCHAR (5) PRIMARY KEY, SEM NUMBER (2),
SEC CHAR (1));
Table created.
SQL> CREATE TABLE CLASS (USN VARCHAR (10), SSID VARCHAR (5),
PRIMARY KEY (USN, SSID),
FOREIGN KEY (USN) REFERENCES STUDENT (USN), FOREIGN KEY (SSID) REFERENCES SEMSEC
(SSID));
Table created.
SQL> CREATE TABLE SUBJECT ( SUBCODE VARCHAR (8), TITLE VARCHAR (20),
SEM NUMBER (2), CREDITS NUMBER (2), PRIMARY KEY (SUBCODE));
Table created.
SQL> CREATE TABLE IAMARKS ( USN VARCHAR (10), SUBCODE VARCHAR (8), SSID VARCHAR (5),
TEST1 NUMBER (2), TEST2 NUMBER (2), TEST3 NUMBER (2), FINALIA NUMBER (2),
PRIMARY KEY (USN, SUBCODE, SSID),
FOREIGN KEY (USN) REFERENCES STUDENT (USN),
FOREIGN KEY (SUBCODE) REFERENCES SUBJECT (SUBCODE), FOREIGN KEY (SSID) REFERENCES
SEMSEC (SSID));
Table created.
SQL> DESC STUDENT;
Name Null? Type
----------------------------------------- -------- ---------------------------- USN NOT NULL VARCHAR2(10) SNAME
VARCHAR2(25) ADDRESS VARCHAR2(25) PHONE NUMBER(10) GENDER CHAR(1)
SQL> DESC SEMSEC;
Name Null? Type
----------------------------------------- -------- ----------------------------
SQL> DESC CLASS;
Name Null? Type
----------------------------------------- -------- ---------------------------- USN NOT NULL VARCHAR2(10)
SSID NOT NULL VARCHAR2(5)
SQL> DESC SUBJECT;
Name Null? Type
----------------------------------------- -------- ---------------------------- SUBCODE NOT NULL VARCHAR2(8) TITLE
VARCHAR2(20) SEM NUMBER(2) CREDITS NUMBER(2)
SQL> DESC IAMARKS;
Name Null? Type
----------------------------------------- -------- ---------------------------- USN NOT NULL VARCHAR2(10) SUBCODE NOT
NULL VARCHAR2(8) SSID NOT NULL VARCHAR2(5) TEST1 NUMBER(2) TEST2 NUMBER(2) TEST3
NUMBER(2) FINALIA NUMBER(2)
SQL> INSERT INTO STUDENT VALUES ('1SG13CS020','AKSHAY','BELAGAVI', 8877881122,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG13CS062','SANDHYA','BENGALURU',
7722829912,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG13CS091','TEESHA','BENGALURU',
7712312312,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG13CS066','SUPRIYA','MANGALURU',
8877881122,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG14CS010','ABHAY','BENGALURU',
9900211201,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG14CS032','BHASKAR','BENGALURU',
9923211099,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG14CS025','ASMI','BENGALURU', 7894737377,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG15CS011','AJAY','TUMKUR', 9845091341,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG15CS029','CHITRA','DAVANGERE',
7696772121,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG15CS045','JEEVA','BELLARY', 9944850121,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG15CS091','SANTOSH','MANGALURU',
8812332201,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG16CS045','ISMAIL','KALBURGI',
9900232201,'M');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG16CS088','SAMEERA','SHIMOGA',
9905542212,'F');
1 row created.
SQL> INSERT INTO STUDENT VALUES ('1SG16CS122','VINAYAKA','CHIKAMAGALUR',
8800880011,'M');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE8A', 8,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE8B', 8,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE8C',8,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE7A', 7,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE7B',7,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE7C', 7,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE6A', 6,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE6B',6,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE6C',6,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE5A',5,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE5B', 5,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE5C', 5,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE4A',4,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE4B', 4,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE4C',4,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE3A',3,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE3B', 3,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE3C',3,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE2A', 2,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE2B',2,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE2C',2,'C');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE1A',1,'A');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE1B',1,'B');
1 row created.
SQL> INSERT INTO SEMSEC VALUES ('CSE1C',1,'C');
1 row created.
SQL> INSERT INTO CLASS VALUES (‘1SG13CS020’,’CSE8A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG13CS062’,’CSE8A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG13CS066’,’CSE8B’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG13CS091’,’CSE8C’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG14CS010’,’CSE7A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG14CS025’,’CSE7A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG14CS032’,’CSE7A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG15CS011’,’CSE4A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG15CS029’,’CSE4A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG15CS045’,’CSE4B’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG15CS091’,’CSE4C’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG16CS045’,’CSE3A’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG16CS088’,’CSE3B’);
1 row created.
INSERT INTO CLASS VALUES (‘1SG16CS122’,’CSE3C’);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS81','ACA', 8, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS82','SSM', 8, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS83','NM', 8, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS84','CC', 8, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS85','PW', 8, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS71','OOAD', 7, 4);
1 row created.
INTO SUBJECT VALUES ('10CS72','ECS', 7, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS73','PTW', 7, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS74','DWDM', 7, 4);
1 row created.
INSERT INTO SUBJECT VALUES (‘10CS75','JAVA', 7, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('10CS76','SAN', 7, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS51', 'ME', 5, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS52','CN', 5, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS53','DBMS', 5, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS54','ATC', 5, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS55','JAVA', 5, 3);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS56','AI', 5, 3);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS41','M4', 4, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS42','SE', 4, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS43','DAA', 4, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS44','MPMC', 4, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS45','OOC', 4, 3);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS46','DC', 4, 3);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS31','M3', 3, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS32','ADE', 3, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS33','DSA', 3, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS34','CO', 3, 4);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS35','USP', 3, 3);
1 row created.
INSERT INTO SUBJECT VALUES ('15CS36','DMS', 3, 3);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS81','CSE8C', 15, 16, 18);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS82','CSE8C', 12, 19, 14);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS83','CSE8C', 19, 15, 20);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS84','CSE8C', 20, 16, 19);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS85','CSE8C', 15, 15, 12);
1 row created.
SQL> SELECT * FROM STUDENT;
USN SNAME ADDRESS PHONE G
---------- BELAGAVI 8877881122 M
-------------------------
-------------------------
---------- -
-------------------------------
------- 1SG13CS020
AKSHAY
1SG13CS062 BENGALURU 7722829912 F
SANDHYA
1SG13CS091 TEESHA BENGALURU 7712312312 F
1SG13CS066 SUPRIYA MANGALURU 8877881122 F
1SG14CS010 ABHAY BENGALURU 9900211201 M
1SG14CS032 BHASKAR BENGALURU 9923211099 M
1SG14CS025 ASMI BENGALURU 7894737377 F
1SG15CS011 AJAY TUMKUR 9845091341 M
1SG15CS029 CHITRA DAVANGERE 7696772121 F
1SG15CS045 JEEVA BELLARY 9944850121 M
1SG15CS091 SANTOSH MANGALURU 8812332201 M
Page 46
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS81','CSE8C', 15, 16, 18);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS82','CSE8C', 12, 19, 14);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS83','CSE8C', 19, 15, 20);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS84','CSE8C', 20, 16, 19);
1 row created.
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('1SG13CS091','10CS85','CSE8C', 15, 15, 12);
1 row created.
SQL> SELECT * FROM STUDENT;
USN SNAME ADDRESS PHONE G
---------- BELAGAVI 8877881122 M
-------------------------
-------------------------
---------- -
-------------------------------
------- 1SG13CS020
AKSHAY
1SG13CS062 BENGALURU 7722829912 F
SANDHYA
1SG13CS091 TEESHA BENGALURU 7712312312 F
1SG13CS066 SUPRIYA MANGALURU 8877881122 F
1SG14CS010 ABHAY BENGALURU 9900211201 M
1SG14CS032 BHASKAR BENGALURU 9923211099 M
1SG14CS025 ASMI BENGALURU 7894737377 F
1SG15CS011 AJAY TUMKUR 9845091341 M
1SG15CS029 CHITRA DAVANGERE 7696772121 F
1SG15CS045 JEEVA BELLARY 9944850121 M
1SG15CS091 SANTOSH MANGALURU 8812332201 M
SQL> SELECT * FROM SEMSEC;
SSID SEM S
----- ---------- - --------------- CSE8A 8 A
CSE8B 8 B CSE8C 8 C CSE7A 7 A CSE7B 7 B CSE7C 7 C CSE6A 6 A CSE6B 6 B CSE6C 6 C CSE5A 5 A CSE5B
5B
SSID SEM S
----- ---------- ------------------------ CSE5C 5 C
CSE4A 4 A CSE4B 4 B CSE4C 4 C CSE3A 3 A CSE3B 3 B CSE3C 3 C CSE2A 2 A CSE2B 2 B CSE2C 2 C CSE1A
1A
SSID SEM S
----- ---------- - --------------------------- CSE1B 1 B
CSE1C 1 C
24 rows selected.
SQL>SELECT * FROM CLASS;
USN SSID
---------- -----
1SG13CS020 CSE8A
1SG13CS062 CSE8A
1SG13CS066 CSE8B
1SG13CS091 CSE8C
1SG14CS010 CSE7A
1SG14CS025 CSE7A
1SG14CS032 CSE7A
1SG15CS011 CSE4A
1SG15CS029 CSE4A
1SG15CS045 CSE4B
1SG15CS091 CSE4C
USN SSID
---------- -----
1SG16CS045 CSE3A
1SG16CS088 CSE3B
1SG16CS122 CSE3C
14 rows selected.
SQL> SELECT * FROM SUBJECT;
SUBCODE TITLE SEM CREDITS
10CS81 ACA 8 4
10CS82 SSM 8 4
10CS83 NM 8 4
10CS84 CC 8 4
10CS85 PW 8 4
10CS71 OOAD 7 4
10CS72 ECS 7 4
10CS73 PTW 7 4
10CS74 DWDM 7 4
10CS75 JAVA 7 4
10CS76 SAN 7 4
1SG13CS020 CSE8A
1SG13CS062 CSE8A
1SG13CS066 CSE8B
1SG13CS091 CSE8C
1SG14CS010 CSE7A
1SG14CS025 CSE7A
1SG14CS032 CSE7A
1SG15CS011 CSE4A
1SG15CS029 CSE4A
1SG15CS045 CSE4B
1SG15CS091 CSE4C
USN SSID
---------- -----
1SG16CS045 CSE3A
1SG16CS088 CSE3B
1SG16CS122 CSE3C
14 rows selected.
SQL> SELECT * FROM SUBJECT;
SUBCODE TITLE SEM CREDITS
10CS81 ACA 8 4
10CS82 SSM 8 4
10CS83 NM 8 4
10CS84 CC 8 4
10CS85 PW 8 4
10CS71 OOAD 7 4
10CS72 ECS 7 4
10CS73 PTW 7 4
10CS74 DWDM 7 4
10CS75 JAVA 7 4
10CS76 SAN 7 4
SUBCODE TITLE SEM CREDITS
15CS46 DC 4 3
15CS31 M3 3 4
15CS32 ADE 3 4
15CS33 DSA 3 4
15CS34 CO 3 4
15CS35 USP 3 3
15CS36 DMS 3 3
SQL> SELECT * FROM IAMARKS;
USN SUBCODE SSID TEST1 TEST2 TEST3 FINALIA
1SG13CS091 CSE8C 15 16 18
10CS81
1SG13CS091 CSE8C 12 19 14
10CS82
1SG13CS091 CSE8C 19 15 20
10CS83
1SG13CS091 CSE8C 20 16 19
10CS84
1SG13CS091 CSE8C 15 15 12
10CS85
1. List all the student details studying in fourth semester ‘C’ section.
SQL> SELECT S.*, SS.SEM, SS.SEC
FROM STUDENT S, SEMSEC SS, CLASS C WHERE S.USN = C.USN AND
SS.SSID = C.SSID AND SS.SEM = 4 AND SS.SEc='C';
USN SNAME ADDRESS PHONE G
------- --- ------- --------------- --- ------- SEM S
---------- -
1SG15CS091 SANTOSH MANGALURU 8812332201 M 4C
2. Compute the total number of male and female students in each semester and in each section.
SQL> SELECT SS.SEM, SS.SEC, S.GENDER, COUNT (S.GENDER) AS COUNT FROM STUDENT S, SEMSEC
SS, CLASS C
WHERE S.USN = C.USN AND SS.SSID = C.SSID
GROUP BY SS.SEM, SS.SEC, S.GENDER ORDER BY SEM;
SEM S G COUNT
3A 1
M
3BF 1
3CM 1
4AF 1
4AM 1
4BM 1
4CM 1
7AF 1
7AM 2
8AF 1
8AM 1
SEM S G COUNT
---------- - - ----------
8BF1
8CF1
13 rows selected.
3. Create a view of Test1 marks of student USN ‘1SG13CS091’ in all subjects.
SQL> CREATE VIEW STU_TEST1_MARKS_VIEW AS SELECT TEST1, SUBCODE
FROM IAMARKS
WHERE USN = '1SG13CS091'; View created.
SQL> SELECT * FROM STU_TEST1_MARKS_VIEW;
TEST1 SUBCODE
---------- -----------------------
15 10CS81
12 10CS82
19 10CS83
20 10CS84
15 10CS85
4. Calculate the Final IA (average of best two test marks) and update the corresponding table for all students.
SQL> CREATE OR REPLACE PROCEDURE AVGMARKS
IS
CURSOR C_IAMARKS IS
SELECT GREATEST(TEST1,TEST2) AS A, GREATEST(TEST1,TEST3) AS B,
GREATEST(TEST3,TEST2) AS C
FROM IAMARKS
WHERE FINALIA IS NULL
FOR UPDATE;
C_A NUMBER;
C_B NUMBER;
C_C NUMBER;
C_SM NUMBER;
C_AV NUMBER;
BEGIN
OPEN C_IAMARKS;
LOOP
FETCH C_IAMARKS INTO C_A, C_B, C_C; EXIT WHEN C_IAMARKS%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(C_A || ' ' || C_B || ' ' || C_C);
IF (C_A != C_B) THEN
C_SM:=C_A+C_B;
ELSE
C_SM:=C_A+C_C;
END IF;
C_AV:=C_SM/2;
--DBMS_OUTPUT.PUT_LINE('SUM = '||C_SM);
--DBMS_OUTPUT.PUT_LINE('AVERAGE = '||C_AV);
UPDATE IAMARKS SET FINALIA=C_AV WHERE CURRENT OF C_IAMARKS;
END LOOP;
CLOSE C_IAMARKS;
END;
/
Procedure created.
(Note: Before execution of PL/SQL procedure, IAMARKS table contents are)
SQL> SELECT * FROM IAMARKS
Below SQL code is to invoke the PL/SQL stored procedure from the command line:
SQL> BEGIN
AVGMARKS;
END;
5. Categorize students based on the following criterion: If FinalIA = 17 to 20 then CAT = ‘Outstanding’
If FinalIA = 12 to 16 then CAT = ‘Average’
If FinalIA< 12 then CAT = ‘Weak’
Give these details only for 8th semester A, B, and C section students.
SQL> SELECT S.USN,S.SNAME,S.ADDRESS,S.PHONE,S.GENDER, (CASE
WHEN IA.FINALIA BETWEEN 17 AND 20 THEN 'OUTSTANDING' WHEN IA.FINALIA BETWEEN 12 AND 16
THEN 'AVERAGE'
ELSE 'WEAK' END) AS CAT
FROM STUDENT S, SEMSEC SS, IAMARKS IA, SUBJECT SUB WHERE S.USN = IA.USN AND SS.SSID =
IA.SSID AND SUB.SUBCODE = IA.SUBCODE AND SUB.SEM = 8;
C. Consider the schema for Movie Database:
ACTOR (Act_id, Act_Name, Act_Gender)
DIRECTOR (Dir_id, Dir_Name, Dir_Phone)
MOVIES (Mov_id, Mov_Title, Mov_Year, Mov_Lang, Dir_id)
MOVIE_CAST (Act_id, Mov_id, Role)
RATING (Mov_id, Rev_Stars)