Ciências da computação dia 129

Subqueries --- Banco de dados

Subqueries

#no IN
SELECT numero
  FROM nfe
  WHERE numero IN (
    SELECT numero
      FROM item_nfe
      WHERE quantidade >= 10
  );

#como tabela (caso raro de acontecer)
SELECT cidade.idcidade, cidade.nome, TB.qtde_bairro
  FROM cidade
  JOIN  (
    SELECT idcidade, COUNT(*) as qtde_bairro
      FROM bairro
      GROUP BY idcidade
  ) as TB
  ON (cidade.idcidade = TB.idcidade);

#como uma coluna(expressão)
SELECT descricao, valor_unitario (
  SELECT AVG(valor_unitario)
    FROm produto
) as media
  FROM produto;

Subquery correlata

#como coluna
SELECT numero, data, (
  SELECT SUM(quantidade * valor_unitario)
    FROM item_nfe
    JOIN produto 
    ON (item_nfe.idproduto = produto.idproduto)
    WHERE item_nfe.numero = nfe.numero
) as total
  FROM nfe;

#no EXISTS
SELECT * 
  FROM bairro
  WHERE EXISTS(
    SELECT 1
      FROM ceps
      WHERE ceps.idbairro = bairro.idbairro
        AND auxiliar IS NOT NULL
  );

EXISTS

SELECT 1

CASE

Having

SELECT numero, SUM(quantidade) as qtde
  FROM item_nfe
  GROUP BY numero
  HAVING qtde > 10;