jplethier / views-examples

Repository created to be used as example on 2021 ruby summit talk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

This project was created to show some examples on how to work with views on rails projects using scenic

Database Diagram

https://dbdiagram.io/d/61a2e20b8c901501c0d585c8

Views

Class students grades

select
  courses.name as course_name,
  disciplines.name as discipline_name,
  teachers.name as teacher_name,
  course_classes.semester,
  course_classes.year,
  students.name as student_name,
  students.email as student_email,
  course_class_students.grade as student_grade
from students
inner join course_class_students on course_class_students.student_id = students.id
inner join course_classes on course_classes.id = course_class_students.course_class_id
inner join disciplines on disciplines.id = course_classes.discipline_id
inner join teachers on teachers.id = course_classes.teacher_id
inner join courses on courses.id = disciplines.course_id;

Teachers's statistics per semester

select
  teachers.id as teacher_id,
  teachers.name as teacher_name,
  course_classes.semester,
  course_classes.year,
  avg(course_class_students.grade) as average_grade,
  count(distinct course_class_students.student_id) as total_students,
  count(distinct course_class_students.course_class_id) as total_classes
from teachers
inner join course_classes on teachers.id = course_classes.teacher_id
inner join course_class_students on course_classes.id = course_class_students.course_class_id
group by teachers.id, teachers.name, course_classes.semester, course_classes.year

Course's demographics per semester

select
  courses.id as course_id,
  courses.name as course_name,
  course_classes.semester,
  course_classes.year,
  states.id as state_id,
  states.name as state_name,
  states.abbreviation as state_abbreviation,
  count(distinct cities.id) as total_cities,
  count(distinct students.id) as total_students
from courses
inner join disciplines on disciplines.course_id = courses.id
inner join course_classes on course_classes.discipline_id = disciplines.id
inner join course_class_students on course_class_students.course_class_id = course_classes.id
inner join students on students.id = course_class_students.student_id
inner join addresses on addresses.student_id = students.id
inner join cities on cities.id = addresses.city_id
inner join states on states.id = cities.state_id
group by courses.id, courses.name, states.id, course_classes.semester, course_classes.year, states.name, states.abbreviation;

About

Repository created to be used as example on 2021 ruby summit talk


Languages

Language:Ruby 77.5%Language:HTML 12.7%Language:JavaScript 8.2%Language:CSS 1.6%