Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Consulta SQLITE3
#1
Bueno, perdón de antemano si el tema no va aquí, pero es que como el sqlite es la base que trae por defecto python, pues es la que uso, y se me generó una duda.

Tengo la siguiente tabla:

# legajo año  cantidad gozadas pendientes
0    1     2021    14           7          7
1    3     2020    14         14          0
2    4     2019    14         14          0
3    2     2022      0           0          0
4    4     2020     14          7          7
5    4     2020      7           7          0

Necesito generar una consulta que me devuelva aquellos legajos que tienen años con pendientes diferentes de cero.
Yo generé lo siguiente:
"SELECT legajo, año, pendientes FROM vacas WHERE pendientes>0"
El problema es que me arroja como resultados los legajos 1 y 4. En el caso del legajo 1, está perfecto, pero en el caso del legajo 4 no (no debería aparecer) ya que el año 2020 cierra con pendientes en cero (ver fila 5). Probé de varias maneras pero no le encuentro la vuelta.
Gracias de antemano.
Responder
#2
Hola, Diego.

Es una consulta más de SQL que de Python. Pero, veamos, lo que no me queda claro es por qué el legajo 4 no debería aparecer. ¿En qué contextos un legajo que tiene pendientes no debería aparecer en los resultados? Hay que tener bien en claro el criterio para poder escribir la consulta correspondiente.

Saludos
Responder
#3
Bueno porque quiero ver los pendientes por año.
Mi consulta arroja dos resultados, legajo 1 y legajo 4.
En el caso del legajo 1, está perfecto porque para el año 2021 figuran 7 en pendientes.
Pero en el caso del legajo 4, el mismo año en donde figura el pendiente 2020 tiene debajo la cancelación de ese pendiente (ver filas 4 y 5). Por eso digo que ese año (2020) cierra con un cero en pendientes.
Lo que ocurre es que, claramente, la consulta me lo muestra por cómo está realizada y no entiendo de qué manera hacerlo para que tenga en cuenta eso.
Responder
#4
Deberías agregar una subconsulta para asegurarte de que el legajo en cuestión no tenga algún registro donde diga que las vacaciones pendientes son cero. Algo así podría funcionar:

Código:
SELECT
    legajo AS legajo_actual, año, pendientes
FROM vacas
WHERE
    pendientes>0
    AND NOT EXISTS (SELECT id FROM vacas WHERE legajo=legajo_actual AND pendientes=0);

Saludos
Responder
#5
Y funcionó perfecto, como no podía ser de otra manera. Sólo tuve que modificar donde decía "id", poner "año".
Millones de gracias eternas.
Responder
#6
Excelente Wink
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)