Exercícios de SQL
Autor: Flavio Correia | Publicado: 2011-08-29T05:48:00-07:00





-1° Apresentar as linhas que tiveram valores de desconto no valor bruto dos pedidos.A apresentacao dos dados, mostra
--qual foi valor de desconto.
--r:
select&nbsp;*&nbsp;from&nbsp;movimento
where&nbsp;valorbruto&nbsp;&lt;&gt;&nbsp;0.0
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--2° Mostrar os pedidos que foram FECHADOS em no segundo semestre de 2009. Considere pedidos fechados com status igual a F

SELECT&nbsp;*&nbsp;FROM&nbsp;Movimento
WHERE&nbsp;dataemissao&nbsp;BETWEEN('2009-07-01 00:00:00.000')&nbsp;AND('2009-12-31 00:00:00.000')
AND&nbsp;status&nbsp;='F'
ORDER&nbsp;BY&nbsp;dataemissao
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--3°Quais os códigos dos clientes que fizeram pedidos para o grupo de movimento 1.1.06
SELECT&nbsp;*&nbsp;FROM&nbsp;Movimento
WHERE&nbsp;codigomov&nbsp;LIKE&nbsp;'%1.1.06%'
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->-- 4°Mostra o número de identificação do Pedido e o grupo de movimento para os pedidos da serie CNT000 até CNT999 e serie SVT (Utilizar LIKE)

SELECT&nbsp;*&nbsp;FROM&nbsp;Movimento
WHERE&nbsp;serie&nbsp;IN('CNT999','CNT000','SVT')
SELECT&nbsp;*&nbsp;FROM&nbsp;Movimento
WHERE&nbsp;serie&nbsp;LIKE&nbsp;'CNT000%'
OR&nbsp;serie&nbsp;LIKE&nbsp;'SVT%'
OR&nbsp;serie&nbsp;LIKE&nbsp;'CNT999%'
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--5°Mostrar os Pedidos que são do grupo do movimento que começa com 1 e não são do status F e do grupo de movimento 2 que são do status F

SELECT&nbsp;*&nbsp;FROM&nbsp;Movimento
WHERE&nbsp;codigomov&nbsp;LIKE&nbsp;'1%'
AND&nbsp;status&nbsp;&lt;&gt;&nbsp;'F'
OR&nbsp;codigomov&nbsp;LIKE&nbsp;'2%'
AND&nbsp;status&nbsp;LIKE&nbsp;'%F%'
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->-- 6 °A numeração de cada residência ou empresa em uma determinada rua é realizada pelos números pares de um lado da rua e
--pelos números ímpares do outro lado da rua. Voces precisam montar a relação de cliente que são do endereço AV. PAULISTA e que tem residencia ou empresa do lado impar e outra relação do mesmo endereço, mas que são do lado par.

SELECT&nbsp;nome,RUA,NUMERO,&nbsp;CASE&nbsp;WHEN&nbsp;RIGHT(REPLACE&nbsp;(CONVERT(CHAR,NUMERO),'/',''),1)&nbsp;IN(3,5,7,9)&nbsp;THEN&nbsp;'IMPAR'
ELSE&nbsp;'PAR'&nbsp;END&nbsp;TESTE
FROM&nbsp;cliente

--7°7. Precisamos realizar uma atualização no cadastro de clientes e precisamos identificar quais são os clientes que tem a coluna cep preenchida de forma incorretamente. A forma incorreta pode ser valores nulos, valores em branco, preenchido somente com zeros entre outros.
--Avalia a coluna CEP da tabela cliente, identifique os possíveis CEP com preenchimento incorreto e apresente uma instrução select que demonstre esses clientes
--Dica. Use DISTINCT para apresentar somente o CEP e ordene o resultado de forma ascendente e descendente para avaliar os ceps.
--Com os ceps identificados, monte a instrução que apresente os clientes.

SELECT&nbsp;DISTINCT&nbsp;*&nbsp;FROM&nbsp;CLIENTE
WHERE&nbsp;cep&nbsp;IS&nbsp;NULL
OR&nbsp;cep&nbsp;LIKE&nbsp;'00000000%'
OR&nbsp;cep&nbsp;LIKE&nbsp;''
OR&nbsp;cep&nbsp;LIKE&nbsp;'%**%'
ORDER&nbsp;BY&nbsp;CEP&nbsp;DESC
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--8. O nome de alguns logradouros para o tipo AVENIDA estão escritos de forma errada. Alguns estão escrito como “AV. PAULISTA” ou “AV. MIGUEL STEFANO” entre outras e como “AV CRUZEIRO DO SUL” ou “AV SAO JOAO” entre outras. Voce precisa realizar um update na tabela de clientes para que esses logradouros tenham sempre a palavra “AVENIDA” no lugar de “AV. ” ou “AV ” no logradouro. O resultado depois da atualização deve ser “AVENIDA PAULISTA”, “AVENIDA MIGUEL STEFANO” , “AVENIDA CRUZEIRO DO SUL”, “AVENIDA SÃO JOAO” e para todas os demais logradouros que são avenidas.
--Dica: Utilizar a função SUBSTRING() para retornar da coluna rua, o nome do logradouro a partir da próxima posição onde termina “AV.” ou “AV “

UPDATE&nbsp;cliente&nbsp;SET&nbsp;RUA&nbsp;=&nbsp;'AVENIDA'
WHERE&nbsp;rua&nbsp;LIKE&nbsp;'[AV.]%'
UPDATE&nbsp;cliente&nbsp;SET&nbsp;RUA&nbsp;=&nbsp;'AVENIDA'
WHERE&nbsp;rua&nbsp;LIKE&nbsp;'[AV]%'
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--9. A coluna CODIGO representa a identificação do cliente na tabela CLIENTE. Agora precisamos criar uma nova coluna para representa o codigo do cliente sem a separação do ponto.
--para isso, antes execute o comando abaixo para criarmos uma nova coluna na tabela CLIENTE.

ALTER&nbsp;TABLE&nbsp;CLIENTE&nbsp;ADD&nbsp;NOVOCAMPO&nbsp;CHAR(9)
check&nbsp;(novocampo&nbsp;&lt;&gt;&nbsp;'.')
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->--10
alter&nbsp;table&nbsp;cliente&nbsp;add&nbsp;dt_cadastro&nbsp;datetime
default&nbsp;dat_cadastro&nbsp;=&nbsp;getdate()&nbsp;