Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.69 KB | None | 0 0
  1. -- KOLOKWIUM 1
  2. --create table
  3. --alter table
  4. --tworzenie i dodawanie wiezow integralnosci
  5. --select distinct
  6. --where
  7. --join
  8. --group by
  9. --having
  10. -- bedzie zadanie z data
  11. -- case tez moze sie pojawic
  12. -- Przyklad: ktory egzaminator egzaminowal wiecej niz 20 osob
  13.  
  14. -- 1. Ile punktow uzyskal z egzaminow KAZDY student?
  15. -- Dla kazdego studenta (id nazwisko imie)
  16. -- podac liczbe uzyskanych punktow
  17.  
  18. SELECT s.id_student, s.nazwisko, s.imie, SUM(e.punkty) AS "Suma punktow"
  19. FROM egzaminy e
  20. RIGHT JOIN studenci s
  21. ON s.id_student = e.id_student
  22. GROUP BY s.id_student, s.nazwisko, s.imie
  23. ORDER BY s.id_student
  24.  
  25. -- 2. Ile punktow uzyskali poszczegolni studenci
  26. -- z egzaminow z poszczegolnych przedmiotow?
  27. -- Dla kazdego studenta ktory zdawal juz egzamin
  28. -- (id nazwisko imie) podac liczbe uzyskanych
  29. -- punktow z egzaminow dla psozczegolnych zdwanych przedmiotow
  30.  
  31. SELECT s.id_student, s.nazwisko, s.imie,
  32.     SUM(e.punkty) AS "Suma punktow",
  33.     p.nazwa_p AS "Nazwa przedmiotu"
  34. FROM egzaminy e
  35. INNER JOIN studenci s ON s.id_student = e.id_student
  36. INNER JOIN przedmioty p ON e.id_przedmiot = p.id_przedmiot
  37. GROUP BY s.id_student, s.nazwisko, s.imie, p.nazwa_p
  38. ORDER BY s.id_student, p.nazwa_p;
  39.  
  40. -- 3. Ile egzaminow przeprowadzono
  41. -- z kazdego przedmiotu?
  42. -- Podac nazwe przedmiotu oraz liczbe egzaminow.
  43. -- Opisac poprawnie kolumne z liczba egzaminwo.
  44. -- Posortowac wg nazwy przemdiotu
  45.  
  46. SELECT p.nazwa_p AS "Nazwa przedmiotu", COUNT(e.nr_egz) AS "Liczba egzaminow"
  47. FROM przedmioty p
  48. INNER JOIN egzaminy e ON p.id_przedmiot = e.id_przedmiot
  49. GROUP BY p.nazwa_p
  50. ORDER BY p.nazwa_p
  51.  
  52. -- 4. Z ktorego przedmiotu przeprowadzono wiecej niz
  53. -- 220 egzaminow. Podac nazwe przedmiotu oraz liczbe egz.
  54.  
  55. SELECT p.nazwa_p AS "Nazwa przedmiotu", COUNT(e.nr_egz) AS "Liczba egzaminow"
  56. FROM przedmioty p
  57. LEFT JOIN egzaminy e ON p.id_przedmiot = e.id_przedmiot
  58. GROUP BY p.nazwa_p
  59. HAVING COUNT(e.nr_egz) > 220
  60. ORDER BY p.nazwa_p
  61.  
  62. -- 5. Ilu studentow zdawalo egzaminy z kazdego przedmiotu?
  63. -- Podac nazwe przedmiotuoraz liczbe studentow.
  64. -- Poprawnie opisac kolumnes
  65. -- Posortowac wg nazwy przedmiotu
  66.  
  67. SELECT p.nazwa_p AS "Nazwa przedmiotu", COUNT(DISTINCT id_student) AS "Liczba studentow"
  68. FROM przedmioty p
  69. LEFT JOIN egzaminy e ON p.id_przedmiot = e.id_przedmiot
  70. GROUP BY p.nazwa_p
  71. ORDER BY p.nazwa_p
  72.  
  73. -- 6. Ilu studentow bylo egzaminowanych
  74. -- przez poszczegolnych egzaminatorow
  75. -- z poszczegolnych przedmiotow?
  76. -- Dla kazdego egzaminatora
  77. -- ktory(id nazwisko imie) przeprowadzil juz egzamin
  78. -- oraz przedmiotu (nazwa) podac liczbe studentow.
  79. -- Posortowac wg id egzaminatora i nazwy przedmiotu
  80.  
  81. SELECT g.id_egzaminator, g.nazwisko, g.imie, p.nazwa_p, COUNT(DISTINCT e.id_student)
  82.     AS "Liczba studentow"
  83. FROM przedmioty p
  84. INNER JOIN egzaminy e ON p.id_przedmiot = e.id_przedmiot
  85. INNER JOIN egzaminatorzy g ON g.id_egzaminator = e.id_egzaminator
  86. GROUP BY g.id_egzaminator, g.nazwisko, g.imie, p.nazwa_p
  87. ORDER BY g.id_egzaminator, p.nazwa_p
  88.  
  89. -- 7. Ile gezaminow przeprowadzono
  90. -- w poszczegolnych miesiacach w kolejnych latach?
  91. -- Dla kazdego roku i miesiaca egzaminowania
  92. -- podac liczbe egzmainow. Opisac poprawnie kolumny.
  93. -- Posortowac wg lat
  94.  
  95. SELECT EXTRACT(YEAR FROM e.data_egz) AS "Rok",
  96.         EXTRACT(MONTH FROM e.data_egz) AS "Miesiac",
  97.         COUNT(e.nr_egz) AS "Liczba studentow"
  98. FROM egzaminy e
  99. GROUP BY EXTRACT(YEAR FROM e.data_egz), EXTRACT(MONTH FROM e.data_egz)
  100. ORDER BY 1,2;
  101.  
  102. -- wersja dodatkowa z wyswietlaniem nazwy miesiecy
  103. -- ale brzydka o.o
  104.  
  105. SELECT EXTRACT(YEAR FROM data_egz) AS Rok,
  106.         CASE EXTRACT(MONTH FROM data_egz)   WHEN 1 THEN 'Styczeń'
  107.                                             WHEN 2 THEN 'Luty'
  108.                                             WHEN 3 THEN 'Marzec'
  109.                                             WHEN 4 THEN 'Kwiecień'
  110.                                             WHEN 5 THEN 'Maj'
  111.                                             WHEN 6 THEN 'Czerwiec'
  112.                                             WHEN 7 THEN 'Lipiec'
  113.                                             WHEN 8 THEN 'Sierpień'
  114.                                             WHEN 9 THEN 'Wrzesień'
  115.                                             WHEN 10 THEN 'Październik'
  116.                                             WHEN 11 THEN 'Listopad'
  117.                                             ELSE 'Grudzień'
  118.         END AS Miesiac,
  119.         COUNT(e.nr_egz) AS "Liczba egzaminów"
  120. FROM egzaminy e
  121. GROUP BY EXTRACT(YEAR FROM data_egz), CASE EXTRACT(MONTH FROM data_egz) WHEN 1 THEN 'Styczeń'
  122.                                             WHEN 2 THEN 'Luty'
  123.                                             WHEN 3 THEN 'Marzec'
  124.                                             WHEN 4 THEN 'Kwiecień'
  125.                                             WHEN 5 THEN 'Maj'
  126.                                             WHEN 6 THEN 'Czerwiec'
  127.                                             WHEN 7 THEN 'Lipiec'
  128.                                             WHEN 8 THEN 'Sierpień'
  129.                                             WHEN 9 THEN 'Wrzesień'
  130.                                             WHEN 10 THEN 'Październik'
  131.                                             WHEN 11 THEN 'Listopad'
  132.                                             ELSE 'Grudzień'
  133.         END,
  134.         EXTRACT(MONTH FROM data_egz)
  135. ORDER BY 1, EXTRACT(MONTH FROM data_egz);
  136.  
  137.  
  138. -- 8. W ktorym miesiacu kazdego roku egzaminowania
  139. -- przeprowadzono wiecej niz 100 egzaminow
  140.  
  141. SELECT EXTRACT(YEAR FROM e.data_egz) AS "Rok",
  142.         EXTRACT(MONTH FROM e.data_egz) AS "Miesiac",
  143.         COUNT(e.nr_egz) AS "Liczba studentow"
  144. FROM egzaminy e
  145. GROUP BY EXTRACT(YEAR FROM e.data_egz), EXTRACT(MONTH FROM e.data_egz)
  146. HAVING COUNT(e.nr_egz) > 100
  147. ORDER BY 1,2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement