Advertisement
JmihPodvalbniy

Untitled

Apr 9th, 2024 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.10 KB | Software | 0 0
  1. CREATE DATABASE students_1;
  2.  
  3. USE students_1;
  4.  
  5. CREATE TABLE students(
  6. student_id INT IDENTITY(1,1) PRIMARY KEY,
  7. name VARCHAR(50),
  8. age INT,
  9. gender VARCHAR(10)
  10. );
  11.  
  12. CREATE TABLE Courses(
  13. course_id INT IDENTITY(1,1) PRIMARY KEY,
  14. course_name VARCHAR(50)
  15. );
  16.  
  17. CREATE TABLE Gradess(
  18. grade_id INT IDENTITY(1,1) PRIMARY KEY,
  19. student_id INT FOREIGN KEY REFERENCES students(student_id) ON UPDATE CASCADE ON DELETE CASCADE,
  20. course_id INT FOREIGN KEY REFERENCES Courses(course_id) ON UPDATE CASCADE ON DELETE CASCADE,
  21. grade_value INT
  22. );
  23. ----------------------
  24. USE students_1;
  25.  
  26. INSERT INTO students (name, age, gender)
  27. VALUES
  28. ('Alice', 18, 'Female'),
  29. ('Bob', 20, 'Male'),
  30. ('Charlie', 19, 'Male'),
  31. ('Diana', 21, 'Female'),
  32. ('Ethan', 18, 'Male'),
  33. ('Fiona', 20, 'Female'),
  34. ('George', 22, 'Male'),
  35. ('Hannah', 19, 'Female'),
  36. ('Ian', 23, 'Male'),
  37. ('Julia', 21, 'Female');
  38.  
  39. INSERT INTO Courses (course_name)
  40. VALUES
  41. ('Mathematics'),
  42. ('Physics'),
  43. ('Chemistry'),
  44. ('Biology'),
  45. ('Computer Science'),
  46. ('History'),
  47. ('Literature'),
  48. ('Economics'),
  49. ('Psychology'),
  50. ('Sociology');
  51.  
  52. INSERT INTO Gradess (student_id, course_id, grade_value)
  53. VALUES
  54. (1, 1, 85),
  55. (2, 2, 92),
  56. (3, 3, 78),
  57. (4, 4, 95),
  58. (5, 5, 88),
  59. (6, 6, 90),
  60. (7, 7, 77),
  61. (8, 8, 84),
  62. (9, 9, 91),
  63. (10, 10, 86);
  64. --------------------------
  65. 1)--Вывести средний балл студентов мужского и женского пола.
  66. USE students_1
  67. SELECT students.gender AS 'Пол', AVG(Gradess.grade_value) AS 'Средний балл'
  68. FROM students
  69. INNER JOIN Gradess
  70. ON students.student_id = Gradess.student_id
  71. GROUP BY students.gender;
  72.  
  73. 2)--Вывести количество студентов на каждом курсе.
  74. USE students_1
  75. SELECT Courses.course_name AS 'Курс', COUNT(Gradess.student_id) AS student_count
  76. FROM Courses
  77. LEFT JOIN Gradess ON Courses.course_id = Gradess.course_id
  78. GROUP BY Courses.course_name
  79. ORDER BY student_count DESC;
  80.  
  81. 3)--Вывести сумму оценок студента с ID=1 на каждом курсе.
  82. USE students_1
  83. SELECT Courses.course_name, SUM(Gradess.grade_value) AS total_grade
  84. FROM Courses
  85. JOIN Gradess ON Courses.course_id = Gradess.course_id
  86. WHERE Gradess.student_id = 1
  87. GROUP BY Courses.course_name;
  88.  
  89. 4)--Вывести количество студентов, у которых средний балл выше 4.
  90. --делал с помощью AI
  91. USE students_1
  92. SELECT COUNT(DISTINCT student_id) AS 'кол-во студентов'
  93. FROM (SELECT student_id, AVG(grade_value) AS average_grade
  94. FROM Gradess
  95. GROUP BY student_id
  96. HAVING AVG(grade_value) > 4
  97. ) AS student_averages;
  98.  
  99. 5)--Вывести средний возраст студентов на каждом курсе.
  100. USE students_1
  101. SELECT Courses.course_name AS 'Курс', AVG(students.age) AS 'Средний возраст'
  102. FROM Courses
  103. LEFT JOIN Gradess ON Courses.course_id = Gradess.course_id
  104. LEFT JOIN students ON Gradess.student_id = students.student_id
  105. GROUP BY Courses.course_name;
  106.  
  107. 6)--Вывести количество студентов на каждом курсе, у которых средний балл выше 3.
  108. --делал с помощью AI
  109. USE students_1
  110. SELECT Courses.course_name AS 'Курс', COUNT(DISTINCT student_averages.student_id) AS 'Кол-во учеников'
  111. FROM  Courses
  112. LEFT JOIN Gradess ON Courses.course_id = Gradess.course_id
  113. LEFT JOIN (SELECT student_id, AVG(grade_value) AS average_grade
  114. FROM Gradess
  115. GROUP BY student_id
  116. HAVING
  117. AVG(grade_value) > 3
  118. ) AS student_averages ON Gradess.student_id = student_averages.student_id
  119. GROUP BY Courses.course_name;
  120.  
  121.  
  122. 7)--Вывести средний возраст студентов мужского и женского пола.
  123. USE students_1
  124. SELECT students.gender AS 'Пол', AVG(students.age) AS 'Средний возраст'
  125. FROM students
  126. GROUP BY students.gender;
  127.  
  128. 8)--Вывести количество студентов с максимальным возрастом.
  129. USE students_1
  130. SELECT COUNT(*) AS 'Кол-во студентов'
  131. FROM students
  132. WHERE age = (SELECT MAX(age) FROM students);
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement