es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando BETWEEN para crear un conjunto exclusivo de intervalos.

Tengo una base de datos que tiene las columnas de id y distancia. Necesito contar el número de ids que se encuentran a una cierta distancia.

Por ejemplo, quiero contar cuántos ids se encuentran entre 1km y 2km de distancia, así que estoy utilizando este código:

SELECT COUNT(distance)
FROM table
WHERE distance BETWEEN 1000 AND 2000
-- Devuelve un total de 240,600

Cuando quiero contar el número de ids que se encuentran entre 2km y 3km, utilizo la misma consulta, pero el valor “2km” se cuenta en ambas consultas ya que el operador BETWEEN es inclusivo.

SELECT COUNT(distance)
FROM table
WHERE distance BETWEEN 2000 AND 3000
-- Devuelve un total de 353,440

Según entiendo, ambas consultas incluirán las filas donde la distancia es exactamente 2000.

Me gustaría saber si hay otra forma de contar cosas como la distancia (y hay muchas filas), o si necesito utilizar GROUP BY y luego contar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para evitar contar las filas donde la distancia sea exactamente 2000 en ambas consultas, puedes usar la palabra clave INTERVAL para excluir el límite superior. Por ejemplo:

    SELECT COUNT(distancia)
    FROM tabla
    WHERE distancia >= 1000 AND distancia < 2000
    -- Devuelve un COUNT de X
    
    SELECT COUNT(distancia)
    FROM tabla
    WHERE distancia >= 2000 AND distancia < 3000
    -- Devuelve un COUNT de Y
    

    De esta manera, el límite superior no se considera en el conteo. Otra opción es usar la cláusula GROUP BY para agrupar las distancias en intervalos y luego contar los ids dentro de cada intervalo. Por ejemplo:

    SELECT CONCAT(FLOOR(distancia/1000), 'km - ', CEIL(distancia/1000), 'km') AS intervalo,
           COUNT(id)
    FROM tabla
    GROUP BY FLOOR(distancia/1000)
    -- Devuelve el conteo de ids para cada intervalo
    

    Esta consulta agrupa las distancias en intervalos de kilómetros y devuelve el conteo de ids para cada intervalo. La función CONCAT se utiliza para crear las etiquetas de intervalo.

Comments are closed.