Skip to content

Commit 0643355

Browse files
committed
Completed all exercises.
1 parent 8511eb9 commit 0643355

File tree

1 file changed

+71
-16
lines changed

1 file changed

+71
-16
lines changed

sqlzoo.sql

Lines changed: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -662,30 +662,85 @@ WHEN dept.id = 3 THEN 'Art'
662662
ELSE 'None' END
663663
FROM teacher LEFT JOIN dept ON (dept.id=teacher.dept)
664664

665-
--Window Function
665+
--SELF JOIN
666666

667667
--1
668-
669-
SELECT lastName, party, votes
670-
FROM ge
671-
WHERE constituency = 'S14000024' AND yr = 2017
672-
ORDER BY votes DESC;
668+
SELECT COUNT(name)
669+
FROM stops;
673670

674671
--2
675672

676-
SELECT party, votes,
677-
RANK() OVER (ORDER BY votes DESC) as posn
678-
FROM ge
679-
WHERE constituency = 'S14000024' AND yr = 2017
680-
ORDER BY party;
673+
SELECT id
674+
FROM stops
675+
WHERE name='Craiglockhart';
681676

682677
--3
683678

684-
SELECT yr,party, votes,
685-
RANK() OVER (PARTITION BY yr ORDER BY votes DESC) as posn
686-
FROM ge
687-
WHERE constituency = 'S14000021'
688-
ORDER BY party,yr
679+
SELECT stops.id, stops.name
680+
FROM route
681+
JOIN stops ON (route.stop=stops.id)
682+
WHERE route.num=4
683+
AND route.company='LRT';
689684

690685
--4
691686

687+
SELECT company, num, COUNT(*)
688+
FROM route
689+
WHERE stop IN (149, 53)
690+
GROUP BY company, num
691+
HAVING COUNT(*)=2;
692+
693+
--5
694+
695+
SELECT a.company, a.num, a.stop, b.stop
696+
FROM route AS a
697+
JOIN route AS b
698+
ON (a.company = b.company)
699+
AND (a.num = b.num)
700+
WHERE a.stop = 53
701+
AND b.stop = 149;
702+
703+
--6
704+
705+
SELECT a.company, a.num, n.name, nn.name
706+
FROM route AS a
707+
JOIN route AS b
708+
ON (a.company, a.num)=(b.company, b.num)
709+
JOIN stops AS n
710+
ON a.stop=n.id
711+
JOIN stops AS nn
712+
ON b.stop=nn.id
713+
WHERE n.name='Craiglockhart'
714+
AND nn.name='London Road';
715+
716+
--7
717+
718+
SELECT DISTINCT a.company, b.num
719+
FROM route AS a
720+
JOIN route AS b
721+
ON (a.company, a.num)=(b.company, b.num)
722+
WHERE a.stop=115
723+
AND b.stop=137;
724+
725+
--8
726+
727+
SELECT a.company, b.num
728+
FROM route AS a
729+
JOIN route AS b
730+
ON (a.company, a.num)=(b.company, b.num)
731+
JOIN stops AS n
732+
ON a.stop = n.id
733+
JOIN stops AS nn
734+
ON b.stop = n.id
735+
WHERE n.name = 'Craiglockhart'
736+
AND nn.name = 'Tollcross';
737+
738+
739+
--9
740+
741+
SELECT stopa.name, a.company, a.num
742+
FROM route a
743+
JOIN route b ON (a.num=b.num AND a.company=b.company)
744+
JOIN stops stopa ON (a.stop=stopa.id)
745+
JOIN stops stopb ON (b.stop=stopb.id)
746+
WHERE stopb.name = 'Craiglockhart'

0 commit comments

Comments
 (0)