Mikrozadanie 1

backback

Treść

Wybierz imiona, pensje i stanowisko wszystkich pracowników którzy: albo mają imię zaczynające się na literę T i zarabiają więcej niż 1500 i mniej niż 2000, albo są analitykami.

Wzorcówka

SELECT e.ename, e.sal, e.job
  FROM emp e 
  WHERE (e.ename LIKE 'T%' AND e.sal > 1500 AND e.sal < 2000) 
     OR e.job =  'ANALYST'

Uwagi

  1. Część pominęła nawiasy wokół pierwszej składowej ORa. Można tak zrobić, bo AND ma większe precedence, ale jest to dość nieczytelne i wymaga od czytającego sprawdzenia jaki konkretnie jest ten precedence. Dlatego bardziej elegancko postawić nawiasy. Swoją drogą tyczy się to wszystkich języków programowania, nie tylko SQLa.

  2. Z drugiej strony część z was postawiła nawiasy wszędzie gdzie się dało

    ((e.ename LIKE 'T%') AND ((e.sal > 1500) AND (e.sal < 2000))) OR (e.job = 'ANALYST')
    

    bez przesady, nawiasy wokół pojedynczego porównania są zbędne.

  3. Na labach rzuciłem, że ten warunek z sal można też zapisać jako e.sal BETWEEN 1501 AND 1999. Jest to technicznie prawda, ale mówiąc to nie pomyślałem, że przecież ktoś kiedyś może zarabiać np. 1999.50 i wtedy to zapytanie się wysypuje. Także jakby przyszło wam kiedyś pisać SQL-a na produkcję to lepiej tak nie kombinować.

backback