Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

240
Vistas
Filtre los resultados si existe un valor en cualquiera de las filas en otra tabla sql

Estoy tratando de contar cuántos de los objetos aparecen en la tabla 2 sin el estado 3 o 5. Entonces, si tiene el estado 3 o 5, quiero excluirlo del conteo. Donde estoy atascado es que hay valores duplicados, ya que pueden tener más de un estado. Más explicación a continuación.


 Table 1 Object_ID 1 2 3 4 5

 Table 2 ID | object_id | status 1 2 2 2 2 3 3 2 5 4 3 2 5 3 2 6 3 7

OBJETIVO FINAL

Cuente cuántos object_ids tienen un estado excluyendo 3 o 5. Pero también para ignorar los duplicados. En este ejemplo, el recuento total sería 1 (con object_id 3). Como necesito encontrar todas las filas en la tabla 2, entonces esencialmente las fusiono asumiendo que ninguna de ellas tiene un estado de 3 o 5.

 Count. | object_id 1 | 3

 SELECT Count(distinct(object_id)) FORM table_2 WHERE status <> 3 or status <> 5

Parece que puedo agruparlos si el estado es 3 o 5, pero parece que no puedo excluirlos.

Con suerte, tiene sentido, he tratado de simplificarlo para no tener código irrelevante incluido.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Un método sin subconsultas es:

 select count(distinct object_id) - count(distinct case when status in (3, 5) then object_id end) from table_2;

Esto cuenta el número de identificadores de objetos distintos y luego resta el número de identificadores de objetos distintos que tienen los estados especificados.

Más típicamente, abordaría esto con dos niveles de agregación:

 select count(*) from (select object_id from table_2 group by object_id having sum( status in (3, 5) ) = 0 ) o
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes usar la agregación:

 select count(*) from ( select object_id from table2 group by object_id having max(status in (3, 5)) = 0 ) t
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda