Logo Hardware.com.br
tdz
tdz Super Participante Registrado
520 Mensagens 5 Curtidas

SQL - Função Count e Between - Duvida

#1 Por tdz 25/02/2009 - 13:29
Ola a todos

Tenho esse exercicio:

Exibir a soma dos salários dos funcionários homens que não sejam vendedores. (funções 10 e 11) (tabela funcionario)

Minha resolução:

select sum(salario) from funcionarios where sexo <> 'F' and função not between 10 and 11


No Gabarito oficial temos:

SELECT SUM(SALÁRIO) FROM FUNCIONÁRIO WHERE SEXO='M' AND FUNÇÃO NOT IN (10,11)


As duas query estão corretas ? ou a minha esta errada ?

Abraços
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#2 Por Fergo
25/02/2009 - 14:10
As funções IN e BETWEEN funcionam de forma diferente, mas no seu caso ambas vão retornar o mesmo resultado. BETWEEN é usado para selecionar os dados pertencentes a um intervalo (de 10 a 11, no seu exemplo). Já a opção IN não especifica um intervalo, apenas valores (vai selecionar as funções 10 e 11, não de 10 a 11).

Se você fizer uma query do tipo "... WHERE funcao BETWEEN 10 and 20" ele vai selecionar as linhas nas quais o valor da coluna funcao está entre 10 e 20 (10, 11, 12, 13, 14...). Se você fizer "... WHERE funcao IN(10, 20)", apenas as linhas nas quais o valor da coluna funcao é 10 ou 20 (e não o intervalo entre eles) serão selecionadas.

Espero que tenha ficado claro. Qualquer coisa avise que eu tento explicar mais detalhadamente.

[]s
Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
tdz
tdz Super Participante Registrado
520 Mensagens 5 Curtidas
#3 Por tdz
25/02/2009 - 14:46
Ola a todos

Fergo Entendi sua explicação sim ! obrigado.

eu só queria confirmar se realmente as duas query's exibiriam o mesmo resultado, é que quando estava fazendo o exercicio, não me lembrei da função in (not in) então como era uma sequencia de numeros (11 e 12) percebi que poderia usar o between, só lembrei da função in ao olhar o gabarito, mais assim, minha professora não pode considerar o exercicio como errado não é mesmo não é mesmo ?

Quanto a dúvida da função count:

Ao usar uma query com count ex:

Tabela: Cliente
Nome End Tel Sexo E-Mail

select count (nome) from Cliente


Obterei o numero de registro no campo nome correto ? se sim isso inclui os nulos ?

Porque se incluir os nulos o certo seria :

select count (nome) from Cliente where nome is not null


esta certo ?

e se eu usar o * ao inves do nome, o que será contado ?

ex:

select count (*) from Cliente


Abraços




Abraços
Athlon XP 1700 +
Mobo: PCchips 810LR
HD: Samsung 40 Gb
768mb ram ( 1x256mb, 1x512mb)
Arch Linux + xfce4

Trekking Cohab II - São Paulo - Brasil
http://trilhastdz.multiply.com/
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#4 Por Fergo
25/02/2009 - 15:15
[code=rich]SELECT COUNT(Nome) FROM Cliente [/code]Essa query vai retornar a quantidade de linhas nas quais a coluna "nome" não for nula. Por exemplo, supondo a tabela Cliente abaixo:

[code=rich]ID Nome Sobrenome

0 Jose Silva
1 Alberto
2 Ana Carolina
3 Maria[/code]Usando a query mencionada acima, o valor retornado será 2, pois existem dois campos em branco que não são considerados.
Para retornar o número total de registros, incluindo os nulos, basta elaborar a query da seguinte forma:
[code=rich]SELECT COUNT(*) FROM Cliente [/code]Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal