Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.27 KB | None | 0 0
  1. --1. Show identifiers and names of courses held on the 1st year of study. Order them alphabetically
  2. --according to the names of courses.
  3. SELECT CNO, CNAME
  4. FROM COURSES
  5. WHERE STUDYEAR = 1
  6. ORDER BY CNAME;
  7.  
  8. --2. How many students have their names starting from letter A?
  9. SELECT COUNT(*)
  10. FROM STUDENTS
  11. WHERE SNAME LIKE "A%";
  12.  
  13. --3. For each city, give the numer of students that come from this city.
  14. SELECT CITY, COUNT(*)
  15. FROM STUDENTS
  16. GROUP BY CITY;
  17.  
  18. --4. For each teacher (id, title and name), give courses (ids, names) that he/she conducted.
  19. SELECT TEACHERS.TNO, TITLE, TNAME, CNO, CNAME
  20. FROM TEACHERS, TSC
  21. WHERE TEACHERS.TNO = TSC.TNO;
  22.  
  23. --5. Show ids of teachers that did not have classes on the 1st year of study.
  24. SELECT TNO
  25. FROM TEACHERS
  26. WHERE NOT EXISTS
  27.     (SELECT *
  28.     FROM COURSES, TSC
  29.     WHERE COURSES.CNO = TSC.CNO
  30.     AND TEACHERS.TNO = TSC.TNO
  31.     AND STUDYEAR = 1);
  32.  
  33. --6. On which year of study there were most courses?
  34. CREATE TABLE YEARS AS
  35.     SELECT STUDYEAR, COUNT(*) YSUM
  36.     FROM COURSES
  37.     GROUP BY STUDYEAR;
  38.  
  39. SELECT STUDYEAR
  40. FROM YEARS
  41. WHERE YSUM IN
  42.     (SELECT MAX(YSUM)
  43.     FROM YEARS);
  44.  
  45. DROP TABLE YEARS;
  46.  
  47. --7. On which year of study there was the greatest average grade?
  48. CREATE TABLE AVGRADE AS
  49.     SELECT STUDYEAR, AVG(GRADE) AVGGR
  50.     FROM COURSES, TSC
  51.     WHERE COURSES.CNO = TSC.CNO
  52.     GROUP BY STUDYEAR;
  53.  
  54. SELECT STUDYEAR
  55. FROM AVGRADE
  56. WHERE AVGGR IN
  57.     (SELECT MAX(AVGGR)
  58.     FROM AVGRADE);
  59.  
  60. DROP TABLE AVGRADE;
  61.  
  62. --8. How many teachers did not have any classes?
  63. SELECT COUNT(*)
  64. FROM TEACHERS
  65. WHERE NOT EXISTS
  66.     (SELECT *
  67.     FROM TSC
  68.     WHERE TSC.TNO = TEACHERS.TNO)
  69.  
  70. 9. FOR each YEAR OF study, SHOW the SUM OF teaching hours. ORDER the RESULT according TO the
  71. --years of study.
  72. SELECT STUDYEAR, SUM(HOURS)
  73. FROM COURSES, TSC
  74. WHERE COURSES.CNO = TSC.CNO
  75. GROUP BY STUDYEAR;
  76.  
  77. --10. Which students (id, name) have the greatest average grade?
  78. CREATE TABLE AVGRADE AS
  79.     SELECT STUDENTS.SNO, AVG(GRADE) AVGGR
  80.     FROM STUDENTS, TSC
  81.     WHERE STUDENTS.SNO = TSC.SNO
  82.     GROUP BY STUDENTS.SNO;
  83.  
  84. SELECT SNO, SNAME
  85. FROM STUDENTS
  86. WHERE SNO IN
  87.     (SELECT SNO
  88.     FROM AVGRADE
  89.     WHERE AVGGR =
  90.         (SELECT MAX(AVGGR)
  91.         FROM AVGRADE));
  92.  
  93. DROP TABLE AVGRADE;
  94.  
  95. --11. Show the list of all students (ids, names) ordered according to decreasing average grades.
  96. CREATE TABLE AVGRADE AS
  97.     SELECT STUDENTS.SNO, SNAME, AVG(GRADE) AVGG
  98.     FROM STUDENTS, TSC
  99.     WHERE STUDENTS.SNO = TSC.SNO
  100.     GROUP BY STUDENTS.SNO;
  101.  
  102. SELECT SNO, SNAME
  103. FROM AVGRADE
  104. ORDER BY AVGG DESC;
  105.  
  106. DROP TABLE AVGRADE;
  107.  
  108. --12. Which teachers (id, title, name) have the most numer of subordinates?
  109. CREATE TABLE SUBS AS
  110.     SELECT OVER.TNO, COUNT(UNDER.TNO) SUBNO
  111.     FROM TEACHERS UNDER, TEACHERS OVER
  112.     WHERE OVER.SUPNO = UNDER.TNO
  113.     GROUP BY OVER.TNO;
  114.  
  115. SELECT TNO, TNAME
  116. FROM TEACHERS
  117. WHERE TNO IN
  118.     (SELECT TNO
  119.     FROM SUBS
  120.     WHERE SUBNO =
  121.         (SELECT MAX(SUBNO)
  122.         FROM SUBS));
  123.  
  124. DROP TABLE SUBS;
  125.  
  126. --13. Which teachers (id, title, name) have no supervisor?
  127. SELECT UNDER.TNO, UNDER.TITLE, UNDER.TNAME
  128. FROM TEACHERS UNDER
  129. WHERE NOT EXISTS
  130.     (SELECT *
  131.     FROM TEACHERS OVER
  132.     WHERE OVER.SUPNO = UNDER.TNO);
  133.  
  134. --14. Which teachers (ids, names) conducted more than 3 courses and how many courses they
  135. --conducted?
  136. CREATE TABLE TC AS
  137.     SELECT TEACHERS.TNO, TNAME , COUNT(*) CRSUM
  138.     FROM TEACHERS, TSC
  139.     WHERE TEACHERS.TNO = TCS.TNO
  140.     GRUOP BY TEACHERS.TNO, TNAME;
  141.  
  142. SELECT TNO, TNAME
  143. FROM TC
  144. WHERE CRSUM > 3;
  145.  
  146. DROP TABLE TC;
  147.  
  148. --15. Show ids and names of those students who obtained at least one 5.0 from any subject.
  149. CREATE TABLE STUDMAXGRADE AS
  150.     SELECT STUDENTS.SNO, SNAME, MAX(GRADE) AS MAXGRADE
  151.     FROM STUDENTS, TCS
  152.     WHERE STUDENTS.SNO = TCS.SNO
  153.     GRUOP BY STUDENTS.SNO, SNAME;
  154.  
  155. SELECT SNO, SNAME
  156. FROM STUDMAXGRADE
  157. WHERE MAXGRADE > 5;
  158.  
  159. DROP TABLE STUDMAXGRADE;
  160.  
  161. --16. Show ids and names of those students who obtained at least one grade that is maximal from
  162. --all the grades obtained by anyone. How many students satisfy this condition?
  163. CREATE TABLE BESTGRADE AS
  164.     SELECT CNO, MAX(GRADE) AS BGRD
  165.     FROM TSC
  166.     GROUP BY CNO;
  167.  
  168. SELECT DISTINCT STUDENTS.SNO, SNAME
  169. FROM STUDENTS, TSC
  170. WHERE STUDENTS.SNO = TSC.SNO
  171. AND TSC.CNO =
  172.     (SELECT BESTGRADE.CNO
  173.     FROM BESTGRADE
  174.     WHERE BESTGRADE.CNO = COURSES.CNO);
  175.  
  176. DROP TABLE BESTGRADE;
  177.  
  178. --17. How many students had mathematics on the 2nd year of study?
  179. SELECT COUNT(DISTINCT SNO)
  180. FROM TCS, COURSES
  181. AND COURSES.CNO = TCS.CNO
  182. AND COURSES.CNAME = 'Mathematics'
  183. AND COURSES.STUDYEAR = 2;
  184.  
  185. --18. Create a view that contains all the data from TSC extended by names of students, titles and
  186. --names of teachers and names of courses.
  187. CREATE VIEW TCSJoined
  188. (TeachNo, StudNo, CourseNo, TeachHours, CourseGrade, StudName, TeachTitle, TeachName, CourseName)
  189. AS SELECT TCS.TNO , TCS.SNO, TCS.CNO, TCS.HOURS, TCS.GRADE, STUDENTS.SNAME, TEACHERS.TITLE, TEACHERS.TNAME, COURSES.CNAME
  190. FROM TCS, TEACHERS, STUDENTS, COURSES
  191. WHERE TCS.TNO = TEACHERS.TNO
  192. AND TCS.SNO = STUDENTS.SNO
  193. AND TCS.CNO = COURSES.CNO;
  194.  
  195.  
  196. --19. For each city, give the total numer of students and teachers that come from this city.
  197.  
  198. --nk
  199.  
  200. --20. Which teacher (id, name) gave the students the worst grades (i.e. the average grade from all
  201. --the grades given by this teacher is the lowest).
  202. CREATE TABLE AVGRADE AS
  203.     SELECT TNO, AVG(GRADE) AVGGR
  204.     FROM TCS
  205.     GROUP BY TNO;
  206.  
  207. SELECT TEACHERS.TNO, TNAME
  208. FROM TEACHERS, AVGRADE
  209. WHERE TEACHERS.TNO IN
  210.     (SELECT AVGRADE.TNO
  211.     FROM AVGRADE
  212.     WHERE AVGGR =
  213.     (SELECT MIN(AVGGR)
  214.     FROM AVGRADE));
  215.  
  216. DROP TABLE AVGRADE;
  217.  
  218. --21. Create an archive for table TSC. The archive should contain ids and names of students and
  219. --teachers, ids and names of courses and grades. Next insert to this archive all the data from
  220. --TSC and clear TSC.
  221.  
  222. --O chuj tu chodzi?
  223.  
  224.  
  225. --22. For each course, show the average grade obtained by the students from this course. Next
  226. --show these courses (ids, names) for which this average exceeds the average of all the
  227. --averages.
  228. CREATE TABLE AVGRADE AS
  229.     SELECT CNO, AVG(GRADE) AVGG
  230.     FROM TCS
  231.     GROUP BY CNO;
  232.  
  233. SELECT COURSES.CNO, CNAME, AVGGR
  234. FROM COURSES, AVGRADE
  235. WHERE COURSES.CNO = AVGRADE.CNO;
  236.  
  237. SELECT COURSES.CNO, CNAME
  238. FROM COURSES, AVGRADE
  239. WHERE COURSES.CNO = AVGRADE.CNO
  240. AND AVGRADE.AVGGR >
  241.     (SELECT AVG(AVGGR)
  242.     FROM AVGRADES);
  243.  
  244. DROP TABLE AVGRADE;
  245.  
  246. --23. Show those teachers (ids, titles, names) who on the 1st year of study taught students that
  247. --come from the same city as the teacher.
  248. SELECT DISTINCT TEACHERS.TNO, TITLE, TNAME
  249. FROM TEACHERS, STUDENTS, COURSES, TCS
  250. WEHERE COURSES.CNO = TCS.CNO
  251. AND TEACHERS.TNO = TCS.TNO
  252. AND STUDENTS.SNO = TCS.SNO
  253. AND TEACHERS.CITY = STUDENTS.CITY
  254. AND COURSES.STUDYEAR = 1;
  255.  
  256. --24. Show the course (id, name) that had the least numer of students (but was conducted on any
  257. --year of study).
  258. CREATE TABLE CRSTUD AS
  259.     SELECT COURSES.CNO, COUNT(*) STUDAMT
  260.     FROM COURSES, TCS
  261.     WHERE COURSES.CNO = TCS.CNO
  262.     GROUP BY COURSES.CNO, CNAME;
  263.  
  264. SELECT COURSES.CNO, CNAME
  265. FROM COURSES, CRSTUD
  266. WHERE COURSES.CNO = CRSTUD.CNO
  267. GROUP BY COURSES.CNO, CNAME;
  268. WHERE CRSTUD.STDAMT =
  269.     (SELECT MIN(STUDAMT)
  270.     FROM CRSTUD);
  271.  
  272. DROP TABLE CRSTUD; 
  273.  
  274. --25. For each year of entry the studies, show the average grade of students that entered studies in
  275. --this year. The result should be ordered according to decreasing averages.
  276. SELECT SYEAR, AVG(GRADE) AS 'AVGRADE'
  277. FROM STUDENTS, TCS
  278. WHERE STUDENTS.SNO = TCS.SNO
  279. GROUP BY SYEAR
  280. ORDER BY 'AVGRADE' DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement