You are on page 1of 3

Vamos observar a tabelaFuncionario:

Podemos notar na imagem acima que o Tiozo do Gs (sim, s dei nomes


toscos) possui o maior salrio (3025.00), enquanto que o Z da Pizza possui
o menor salrio (2250.00). Conseguimos obter esses valores, mnimo e
mximo, por meio das funes de totalizao Min() e Max(), descritas a
seguir:
Min(): Esta funo retorna o menor valor de um conjunto;
Max(): Esta funo retorna o maior valor de um conjunto.
Com essas funes, podemos saber qual funcionrio detm o maior salrio
e qual recebe o menor, como o script abaixo nos mostra usando o Max():
SELECT * FROM FUNCIONARIO
WHERE SALARIOFUNCIONARIO = (SELECT MAX(SALARIOFUNCIONARIO) FRO
MFUNCIONARIO)
Teremos o seguinte resultado:

Como aconteceu antes, assim que a Subquery da instruo acima for


executada, o maior salrio ser obtido e armazenado na memria. Tendo
esse dado, o primeiroSELECT ir relacionar somente o funcionrio que
detm este valor. Lembre-se: a ordem de execuo do SQL Server (neste
caso especfico) sempre de dentro pra fora.
Da mesma forma, usando o Min():
SELECT * FROM FUNCIONARIO
WHERE SALARIOFUNCIONARIO = (SELECT MIN(SALARIOFUNCIONARIO) FRO
MFUNCIONARIO)
Teremos o seguinte resultado:

Podemos ainda usar outro operador, que largamente utilizado no SQL


Server. Ele o Count(), que como h de se imaginar, serve para contar um
determinado nmero de registros em uma condio especfica.
Aplicando o Count() em nossa tabela, podemos us-lo em conjunto com
a Subquery para sabermos quantos funcionrios ocupam cada um dos
cargos da tabela Cargo (lembra dela?). Neste caso, a Subquery estar
correlacionada ao comando externo por meio da tabela Cargo. Para isso,
devemos executar a seguinte instruo:
SELECT *
(SELECT COUNT(*) FROM FUNCIONARIO
WHERE IDCARGO = CARGO.IDCARGO) AS 'Qtde de Funcionrios'
FROM CARGO
Confira o resultado:

- Regras de Uso O uso adequado das Subqueries requer a nossa


observao e cumprimento das seguintes regras:
Parnteses As Subqueries devem ser usadas entre parnteses.
Uma coluna como resultado Ao usarmos Subqueries, podemos
obter apenas uma coluna por Subquery.
Sinal de = Um nico valor ser retornado ao usarmos o sinal = no
incio da Subquery.
Pensa que o artigo acabou? Quase...
Update com Subqueries As Subqueries podem ser usadas para
atualizarmos dados. Por exemplo: Se quisermos dar um aumento
de 10% somente aos funcionrios que seus cargos forem de Programador
Jr. podemos usar a seguinte instruo:
UPDATE FUNCIONARIO
SET SALARIOFUNCIONARIO = SALARIOFUNCIONARIO * 1.1
WHERE IDCARGO = (SELECT IDCARGO FROM CARGO WHERE IDCARGO = 1)
Nossa tabela, com os salrios atualizados ficaria desta forma:
Perceba que foram atualizados os salrios apenas dos funcionrios Z da
Pizza eMarisa da Horta, que contm o Id 1, referente ao cargo Programador
Jr.
Delete com Subqueries Podemos usar tambm Subqueries para remover
dados de uma tabela. Seguindo a lgica do exemplo anterior, vamos excluir
somente os funcionrios que tiverem o cargo DBA Jr. Conseguimos isso
usando a seguinte instruo:
DELETE FROM FUNCIONARIO
WHERE IDCARGO = (SELECT IDCARGO FROM CARGO WHERE IDCARGO = 4)
Nesse exemplo, perceba que apenas exclumos 1 funcionrio, o Adalberto
do Sacolo:

Fonte de Consulta: Apostila de SQL Server, da Impacta Tecnologia.

You might also like