Aqui está meu conjunto de dados:
Para qualquer 'tempo' (basicamente a cada segundo), cerca de 3 a 5 'IDs de células' são registrados. O que preciso saber é o 'ID da célula' do 'sinal de referência _ potência recebida' máximo recebido para cada conjunto de tempo (segundo).
Por exemplo, no primeiro conjunto de tempo, 10:32:25, vemos quatro 'IDs de células', 420, 214, 284 e 323 e é fácil ver que o máximo 'sinal de referência _ potência recebida' é -87,38 para o primeiro horário. Agora podemos criar uma consulta SQL para fazer isso para nós?
Tenho horas de dados, então uma solução programática é muito desejável.
O que você está procurando é uma função de janela . Alguns comuns são
ROW_NUMBER()
,RANK()
eDENSE_RANK()
. Mas acho que a solução mais simples para você é usar aFIRST_VALUE()
função window assim:O que a
FIRST_VALUE()
função de janela faz é agrupar as linhas pelo campo que está sendo particionado e ordenar as linhas dentro desses grupos de partição pelo campo na cláusula order by e retornar o primeiro valor do campo passado para a função (cell id
neste caso ) de cada grupo de partições de linha. A palavra-chave distinta então reduz as linhas para apenas uma linha única pertime
e firstcell id
.Observe que se seus dados abrangem várias datas e você realmente deseja uma data e hora separadas
cell id
para cada data e hora distintas, basta adicionar odate
campo à consulta acima para dividi-lo adequadamente:Além disso, apenas para uma boa capacidade de gerenciamento e legibilidade, e para reduzir a chance de erros sintáticos, você deve nomear suas colunas sem caracteres especiais (por exemplo, espaços) e não usar palavras reservadas (por exemplo, tipos de dados
date
etime
) como nomes.