Outro exercício de SQL que soluciono e posto aqui. Veja a seguir.
Antes de resolver qualquer problema de SQL do URI, recomendamos seguir os seguintes passos:
- Ler todo enunciado do problema.
- Ler os tópicos do fórum em caso de dúvidas
- Preparar o esquema, conforme fornecido no problema. Obs.: muitas vezes o pessoal coloca o código de criação do esquema no fórum, então é só copiar!
Plataforma: URI (BEECROWD)
Problema: 2737
Solução:
A primeira consulta seleciona os dados do advogado que tem mais clientes. Na verdade seleciona todos advogados e ordena em ordem decrescente, mas utilizando LIMIT 1 acaba pegando só o que tem mais clientes.
A segunda consulta faz a mesma coisa, mas ordena com customers_number ASC, ou seja, do menor para o maior. Também utilizei LIMIT 1 para pegar só o que tem menos clientes.
A terceira consulta pega a média de clientes, arredondando o valor sem casas decimais através do uso d função round.
Outras soluções poderiam envolver o cast do valor médio para o tipo integer, assim não precisaria arredondar. Também seria possível usar operadores de agregação (min e max) nas duas primeiras consultas.
O que você achou desta solução? Veja abaixo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| (SELECT name, customers_number
FROM lawyers
ORDER BY customers_number DESC
LIMIT 1)
UNION ALL
(SELECT name, customers_number
FROM lawyers
ORDER BY customers_number ASC
LIMIT 1)
UNION ALL
(SELECT 'Average', round(AVG(customers_number), 0)
FROM lawyers)
|