database-2025/docs/views.sql

22 lines
791 B
SQL

-- STUDENT PERFORMANCE --
CREATE OR REPLACE VIEW vw_student_performance AS
SELECT s.id AS student_id,
p.name || ' ' || p.surname AS full_name,
s.group_id,
COUNT(st.id) FILTER (WHERE st.grade >= 3) AS passes,
COUNT(st.id) FILTER (WHERE st.grade < 3) AS fails,
ROUND(AVG(st.grade)::numeric, 2) AS avg_grade
FROM Students s
JOIN Physicals p ON s.person = p.passport_no
LEFT JOIN Statements st ON s.id = st.student_id
GROUP BY s.id, p.name, p.surname, s.group_id;
-- BIRTHDAYS ON THIS MONTH --
CREATE VIEW vw_birthdays_month AS
SELECT passport_no,
name || ' ' || surname AS full_name,
birthday,
EXTRACT(DAY FROM birthday) AS day_of_month
FROM Physicals
WHERE EXTRACT(MONTH FROM birthday) = EXTRACT(MONTH FROM NOW())
ORDER BY day_of_month;