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

Case Study

Uploaded by

Rutumbara Chakor
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 views15 pages

Case Study

Uploaded by

Rutumbara Chakor
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/ 15

CREATE TABLE artist

artist_id INT,

artist_name VARCHAR(30),

CONSTRAINT PK_artist PRIMARY KEY (artist_id)

);

DESC artist;

SELECT *

FROM artist;

CREATE TABLE collection

collection_id INT,

collection_type VARCHAR(30),

CONSTRAINT PK_collection PRIMARY KEY (collection_id)

);

DESC collection;

SELECT *

FROM collection;

CREATE TABLE album

album_id INT,

album_name VARCHAR(30),

year INT,
artist_id INT,

collection_id INT,

CONSTRAINT PK_album PRIMARY KEY (album_id),

CONSTRAINT FK_album_art FOREIGN KEY (artist_id) REFERENCES artist (artist_id),

CONSTRAINT FK_album_col FOREIGN KEY (collection_id) REFERENCES collection (collection_id)

);

DESC album;

SELECT *

FROM album;

CREATE TABLE track

track_id INT,

track_name VARCHAR(20),

time INT,

album_id INT,

price DECIMAL(6, 2),

CONSTRAINT PK_track PRIMARY KEY (track_id, album_id),

CONSTRAINT FK_track FOREIGN KEY (album_id) REFERENCES album (album_id)

);

DESC track;

SELECT *

FROM track;
INSERT INTO collection

VALUES (1, 'Indian Classical');

INSERT INTO collection

VALUES (2, 'Western Classical');

INSERT INTO collection

VALUES (3, 'Pop');

INSERT INTO collection

VALUES (4, 'K-Pop');

INSERT INTO collection

VALUES (5, 'Jazz');

insert into artist

values (101, 'aa');

insert into artist

values (102, 'bb');

insert into artist

values (103, 'cc');

insert into artist

values (104, 'dd');

insert into artist

values (105, 'ee');

insert into artist


values (106, 'bob azzam');

insert into artist

values (107, 'alice stewart');

insert into album

values (1001, 'album a', 2003, 106, NULL);

insert into album

values (1002, 'album b', 1999, 106, NULL);

insert into album

values (1003, 'album c', 2000, 102, NULL);

insert into album

values (1004, 'album d', 2000, 103, 3);

insert into album

values (1005, 'album e', 2003, 102, 2);

insert into album

values (1006, 'album f', 2009, 107, 3);

insert into album

values (1007, 'album u', 2005, 107, 5);

insert into album

values (1008, 'album g', 2006, 107, 3);

insert into album

values (1009, 'album h', 2007, 107, 5);

insert into album

values (1012, 'album k', 2006, 107, 5);

insert into album

values (1010, 'album i', 2002, 103, 3);

insert into album

values (1011, 'album j', 2001, 103, 3);


insert into track

values (1, 'blue eye a', 5, 1006, 123.32);

insert into track

values (2, 'romantic song1', 6, 1005, 123.25);

insert into track

values (3, 're blue eye', 7, 1006, 789.25);

insert into track

values (4, 'jazz_inst', 8, 1007, 489.32);

insert into track

values (5, 'romantic reprise', 9, 1004, 45.25);

insert into track

values (6, 'love f', 9, 1004, 486.22);

insert into track

values (7, 'Till', 3, 1001, 156.14);


Statements
1
SELECT COUNT(track_id) AS no_of_tracks FROM track RIGHT OUTER JOIN album on track.album_id =
album.album_id GROUP BY album.album_id;

2
SELECT COUNT(album.album_id) AS albumsCompiled

FROM album

RIGHT OUTER JOIN artist on artist.artist_id = album.artist_id

GROUP BY artist.artist_id

HAVING COUNT(album.album_id) > 1;

3
SELECT artist_name

FROM artist

WHERE EXISTS(SELECT *

FROM album

WHERE album_id IS NOT NULL

AND artist.artist_id = album.artist_id);

4
SELECT * FROM (SELECT album_name, track_name

FROM album,

track

ORDER BY time DESC) WHERE rownum <= 1;

5
SELECT album_name AS Jazz_Album

FROM album,

collection

where album.collection_id = collection.collection_id

AND collection.collection_type = 'Jazz';

6
CREATE VIEW albumsInTwo AS

SELECT a.artist_id, (COUNT(a.year)) AS albums_in_two

FROM album a,

album b

WHERE a.artist_id = b.artist_id

AND b.year <= (a.year + 2)

AND a.album_id != b.album_id

AND a.year <= b.year

GROUP BY a.year, a.artist_id;

SELECT artist_name

FROM artist

WHERE artist_id IN (SELECT artist_id

FROM albumsInTwo

WHERE albums_in_two = SELECT * FROM (SELECT albums_in_two

FROM albumsInTwo

ORDER BY albums_in_two DESC

) WHERE rownum <= 1);

7
SELECT album_id, track_name
FROM track

WHERE time > (SELECT AVG(time) FROM track);

8
CREATE VIEW info AS

SELECT artist_name, album_name, year

FROM album,

artist

WHERE artist.artist_id = album.artist_id;

SELECT *

FROM info;

9
SELECT track_name

FROM track

WHERE price > (SELECT MIN(track.price) FROM track);

Output
Result Set 15
NO_OF_TRACKS
1
0
2
0
0
2
0
1
1
0
0
0
Download CSV
12 rows selected.

Result Set 16
ALBUMSCOMPILED
5
3
2
2
Download CSV
4 rows selected.

Result Set 17
ARTIST_NAME
bob azzam
bb
cc
alice stewart
Download CSV
4 rows selected.

Result Set 18
ALBUM_NAME TRACK_NAME
album a romantic reprise
Download CSV

Result Set 19
JAZZ_ALBUM
album u
album h
album k
Download CSV

Result Set 20
ALBUM_ID TRACK_NAME
1006 re blue eye
1007 jazz_inst
1004 romantic reprise
1004 love f
Download CSV

Result Set 21
ARTIST_NAM
E ALBUM_NAME YEAR
bob azzam album a 2003
bob azzam album b 1999
bb album c 2000
cc album d 2000
bb album e 2003
alice stewart album f 2009
alice stewart album u 2005
alice stewart album g 2006
alice stewart album h 2007
alice stewart album k 2006
cc album i 2002
cc album j 2001
Download CSV
12 rows selected.

Result Set 22
TRACK_NAME
blue eye a
romantic song1
re blue eye
jazz_inst
love f
Till
Download CSV
6 rows selected.

PL/SQL
1
UPDATE album

SET album.year = EXTRACT(Year FROM SYSDATE) - album.year;

ALTER TABLE album ADD year_creation INT;

DESC album;

UPDATE album

SET album.year_creation = 2021 - album.year;

2
CREATE OR REPLACE PROCEDURE setprice(inalbumid IN NUMBER)

IS

v_cnt INT;

BEGIN

SELECT year_creation INTO v_cnt from album WHERE album_id = inalbumid;

IF (v_cnt < 2)

THEN

UPDATE track SET price = price * 1.05 WHERE album_id = inalbumid;

ELSIF (v_cnt < 5)

THEN

UPDATE track SET price = price * 1.07 WHERE album_id = inalbumid;

ELSE

UPDATE track SET price = price * 1.1 WHERE album_id = inalbumid;

end if;

END;

3
CREATE OR REPLACE PROCEDURE firstCurs

IS

d NUMBER(10) DEFAULT 0;

albumid NUMBER(10);

CURSOR Get_cur IS SELECT album_id FROM album;

BEGIN

OPEN Get_cur;

<<lbl>>

LOOP

IF d = 1 THEN

EXIT lbl;

END IF;

IF NOT d = 1 THEN

FETCH Get_cur INTO albumid;

IF Get_cur%NOTFOUND THEN d := 1;

END IF;

setprice(albumid);

END IF;

END LOOP;

CLOSE Get_cur;

END;

SELECT * FROM track;

CALL firstCurs;

SELECT * FROM track;

4
CREATE OR REPLACE FUNCTION maxprice(albumid NUMBER)

RETURN NUMBER

IS

maxpr NUMBER(6, 2);

BEGIN

SELECT MAX(price) INTO maxpr FROM track WHERE album_id = albumid;

RETURN maxpr;

END;

SELECT maxprice(1004) FROM dual;

PL/SQL OUTPUT
Result Set 23
TRACK_ID TRACK_NAME TIME ALBUM_ID PRICE
1 blue eye a 5 1006 149.22
2 romantic song1 6 1005 149.14
3 re blue eye 7 1006 955
4 jazz_inst 8 1007 592.08
5 romantic reprise 9 1004 54.76
6 love f 9 1004 588.32
7 Till 3 1001 188.93
Download CSV
7 rows selected. Statement processed.

Result Set 24
TRACK_ID TRACK_NAME TIME ALBUM_ID PRICE
1 blue eye a 5 1006 164.14
2 romantic song1 6 1005 164.05
3 re blue eye 7 1006 1050.5
4 jazz_inst 8 1007 651.29
5 romantic reprise 9 1004 60.24
6 love f 9 1004 647.15
7 Till 3 1001 207.82
Download CSV
7 rows selected.

Result Set 25
MAXPRICE(100
4)

647.15
Download CSV

You might also like