Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

246
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda