Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 2995. Mostrar todas as postagens
Mostrando postagens com marcador 2995. Mostrar todas as postagens

quinta-feira, 16 de julho de 2020

URI (BEECROWD) - 2995 - A Mensagem do Sensor - SQL - PostgreSQL

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:

  1. Ler todo enunciado do problema.
  2. Ler os tópicos do fórum em caso de dúvidas
  3. 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)

Problema2995

Solução:

Esse exercício, na minha opinião, tem complexidade alta. Envolve alguns recursos que eu mesmo nunca havia trabalhado no postgreSQL.

Creio que para solucionar este exercício uma boa fonte de estudo é a documentação do PostgreSQL, na parte que fala sobre Window Functions: https://www.postgresql.org/docs/9.1/tutorial-window.html.

A coluna temperature foi "particionada" em grupos. Precisei usar isso duas vezes, uma delas usando também a coluna mark, e tive que agrupar os valores pelas colunas temperature, mark e seq com group by.

Pode ser que exista outra solução mais simples, mas essa foi a única forma que encontrei de obter oa ceite. 👀

E você, achou fácil? Tem outra solução?

1
2
3
4
5
SELECT temperature, COUNT(*) AS number_of_records FROM (
  SELECT records.*, row_number() OVER (PARTITION BY temperature)
  - row_number() OVER (PARTITION BY temperature, mark) AS seq 
        FROM records) t
GROUP BY temperature, mark, seq ORDER BY mark;

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas