@@ -662,30 +662,85 @@ WHEN dept.id = 3 THEN 'Art'
662
662
ELSE ' None' END
663
663
FROM teacher LEFT JOIN dept ON (dept .id = teacher .dept )
664
664
665
- -- Window Function
665
+ -- SELF JOIN
666
666
667
667
-- 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;
673
670
674
671
-- 2
675
672
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' ;
681
676
682
677
-- 3
683
678
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 ' ;
689
684
690
685
-- 4
691
686
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