Vamos dar uns toques de SQL? V

10 Comentários

Por Pedro Gaspar para o PPLWARE

Depois de termos aprendido algumas das funções mais básicas de sql, esta semana vamos aprender a agrupar resultados utilizando o DISTINCT e o GROUP, alem disso também vamos aprender a contar os resultados obtidos com recurso ao COUNTsql_00


Para apresentar alguns exemplos utilizei a tabela que temos vindo a usar nas ultimas semanas com os seguintes dados:

sql_01
Por vezes temos dados repetidos na nossa tabela e queremos que eles apareçam apenas uma vez na listagem, pois esta semana vamos aprender duas formas de o fazer
Começando pelo DISTINCT

Sintaxe de Utilização

SELECT DISTINCT nome_coluna(s)    
FROM nome_tabela

O DISTINCT é a forma mais simples de o fazer, mas também podemos utilizar o GROUP
Sintaxe de Utilização

SELECT nome_coluna(s)
FROM nome_tabela
GROUP BY coluna1 [, coluna2, coluna3]

Nada melhor para explicar todo o conceito do que utilizar alguns exemplos:

EXEMPLO1
Objectivo: Apresentar a lista de cores de cabelo
Query utilizando o DISTINCT:

SELECT DISTINCT cor_cabelo
FROM `tbl_ppware`

Query utilizando o GROUP:

SELECT cor_cabelo
FROM `tbl_ppware`
GROUP BY cor_cabelo

Resultado:

sql_ex1
Apesar de as duas funções apresentarem o mesmo resultado o seu funcionamento e totalmente diferente, sendo que com o GROUP conseguimos fazer queries muito mais complexas do que com o DISTINCT.

Vamos agora aprender a função COUNT para mais à frente utiliza-la em conjunto com o DISTINCT e o GROUP
O COUNT permite-nos contar o numero de registos de uma determinada coluna.

Sintaxe de utilização

SELECT COUNT(nome_coluna)
FROM nome_tabela

EXEMPLO2
Objectivo:
Apresentar o numero de registos que estão na tabela tbl_pplware
Query:

SELECT COUNT( * )
FROM `tbl_ppware`

(como não queremos seleccionar nenhum campo em particular podemos utilizar o ‘*’, mas poderíamos ter utilizado um campo qualquer para o efeito)
Resultado:

sql_ex2
Para não aparecer ‘COUNT(*)’ no nome do campo da query que acabamos de fazer podemos utilizar o AS de forma a dar o nome que quisermos ao campo, vejamos o mesmo exemplo mas utilizando o AS
Query:

SELECT COUNT( * ) AS total
FROM `tbl_ppware`

Resultado:

sql_ex3

EXEMPLO3
Objectivo: Apresentar o numero das diferentes cores de cabelo existentes
Query:

SELECT COUNT( DISTINCT cor_cabelo ) AS cores
FROM `tbl_ppware`

Resultado:

EXEMPLO4
Agora vamos juntar tudo o que aprendemos até este ponto.
Objectivo: Apresentar as cores de cabelo existentes e ao mesmo tempo mostrar quantas vezes existe cada uma
Query:

SELECT cor_cabelo, COUNT( * ) AS total
FROM `tbl_ppware`
GROUP BY cor_cabelo

Resultado:

sql_ex4
Espero que tenham gostado da explicação sobre sql desta semana, para a semana há mais.

Partilhar:
Tags:

Comentários

10

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Pedro Pinto

    Mais um excelente artigo Pedro. Parabéns !!

  2. Avatar de Queirós
    Queirós

    Façam uma listagem de todos o comandos em SQL e para que servem, e posteriormente e que começavam com os exemplos.

    espero também comandos para interagir com bases de dados espaciais.

    1. Avatar de Vitor
      Vitor

      Algo como um guia rápido de comandos sql seria realmente interesante

      1. Avatar de Vitor
        Vitor

        “interessante”

    2. Avatar de Ruben
      Ruben

      caramba… se arranjarem a base de dados, isto é que ia ser… fazer querys pra ver as estrelas e coisas assim parecidas!!! lol hehe
      lol

  3. Avatar de Michael Douglas
    Michael Douglas

    Fazer assim como nas extensões do Chrome fica bem organizado e de fácil acesso aos outros Tutoriais.

    Michael Douglas
    Brasil!

  4. Avatar de jagsilva
    jagsilva

    Olá
    Tenho uma tabela com:
    Referencia – Qtd – Causa
    1234567 2 A
    1111111 1 C
    2222222 5 B
    1234567 3 B
    1234567 1 A
    1111111 3 A
    Preciso de fazer uma tabela por referencia, causa, quantidade, isto é:

    Referencia – Qtd – Causa
    1111111 3 A
    1111111 1 C
    1234567 3 A
    1234567 3 B

    Alguém me dá uma ajuda?

    1. Avatar de Carlos Correia

      create table nova_tabela as (select Referencia, Qtd, Causa order by Referencia, Causa, qtd) with data

  5. Avatar de GABRIELA
    GABRIELA

    Adorei o post, me ajudou muito. thanx.