Skip to content

Instantly share code, notes, and snippets.

@tissyane
Last active October 6, 2022 20:48
Show Gist options
  • Save tissyane/02d08894190fa9a149763cd09f0f1126 to your computer and use it in GitHub Desktop.
Save tissyane/02d08894190fa9a149763cd09f0f1126 to your computer and use it in GitHub Desktop.
-- Questão 01: a quantidade de experiencias (experiences) atuais, ou seja, com “endDate” diferente de NULL -> As funções agregadas, tais como SUM, COUNT, AVG, MAX e MIN excluem os valores NULL, portanto:
SELECT COUNT("endDate") AS "currentExperiences" FROM experiences;
--Questão 02: a quantidade de graduações (educations) por usuário, incluindo o seu id:
SELECT "userId" AS id, COUNT(e."userId") AS educations FROM educations e GROUP BY "userId";
-- Questão 03: a quantidade de depoimentos (testimonials) que o usuário com id 435 efetuou, incluindo o seu nome:
SELECT u.name AS writer, COUNT(t."writerId") AS "testimonialCount"
FROM testimonials t
JOIN users u ON t."writerId" = u.id
WHERE u.id = 435
GROUP By writer;
-- Questão 04: o maior salário das vagas (jobs) ativas (active sendo true) e o nome das posições (roles) dessas vagas ordenadas de forma ascendente:
SELECT MAX(salary) AS "maximumSalary", r.name AS role
FROM jobs j
JOIN roles r ON j."roleId" = r.id
WHERE j.active IS TRUE
GROUP BY name
ORDER BY "maximumSalary";
-- Desafio: os 3 cursos (courses) e escolas (schools) com a maior quantidade de alunos (educations) que estão cursando (status ongoing) ou finalizaram (status finished)
SELECT s.name AS school, c.name AS course, COUNT(e.status) AS "studentsCount", e.status
FROM educations e
JOIN schools s ON e."schoolId" = s.id
JOIN courses c ON e."courseId" = c.id
WHERE e.status = 'ongoing' OR e.status = 'finished'
GROUP BY s.name, c.name, e.status
ORDER BY "studentsCount" DESC
LIMIT 3;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment