SQL Comandos para Relatórios e Formulários. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri



Documentos relacionados
SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

DML - SELECT Agrupando Dados

Tarefa Orientada 13 Agrupamento e sumário de dados

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Projeto de Banco de Dados

Álgebra Relacional e SQL

Linguagem de Consulta - SQL

NOME SEXO CPF NASCIMENTO SALARIO

Prof.: Clayton Maciel Costa

Banco de Dados. Prof. Antonio

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Comandos de Manipulação

SQL UMA ABORDAGEM INTERESSANTE

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

SQL Avançado Continuação. Renata Viegas

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Consultas SQL Parte II

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Linguagem de Banco de Dados DML Exercícios

Structured Query Language (SQL)

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

António Rocha Nuno Melo e Castro

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Múltiplas Tabelas. Disciplina de Banco de Dados

Introdução ao SQL Avançado

Tarefa Orientada 16 Vistas

MODELO DE DADOS VS ESQUEMA

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

ANÁLISE E PROJETO DE BANCO DE DADOS

Sumário. Introdução O Problema... 3

PROGRAMA. Objectivos Gerais :

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Pedro F. Carvalho Analista de Sistemas As cláusulas ROLLUP, CUBE e GROUPING

Tarefa Orientada 14 Subconsultas

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Linguagem de Consulta Estruturada SQL- DML

SQL. Agregações e agrupamentos. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

SQL Structured Query Language

Memória de aula Aulas 11 e 12

Definida pelo American National Standard Institute (ANSI) em 1986

SQL. Prof. Márcio Bueno.

SQL Consultas Básicas

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

SQL DML. Frederico D. Bortoloti

Projeto e Implementação

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

EXEMPLOS DE COMANDOS NO SQL SERVER

BANCO DE DADOS aula 6 álgebra relacional -

José Antônio da Cunha CEFET - RN. José Antônio - CEFET-RN

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Query SQL (Structured Query Language)

Prof.: Clayton Maciel Costa

Rápida revisão do Modelo Relacional

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

Principais Instruções em SQL

Bem-vindo ao tópico sobre consultas no SAP Business One.

Programação SQL. INTRODUÇÃO II parte

Exercícios de Lógica Exercícios de Fixação 08

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Aula 5. Carlos Eduardo de Carvalho Dantas

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

Prof. Ronaldo R. Goldschmidt. geocities.yahoo.com.br/ronaldo_goldschmidt

Linguagem SQL Comando SELECT Agrupamento de Resultados

Consultas (Queries) ou Interrogações

BDII SQL Junção Revisão 8

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

SQL: Uma Linguagem de Consulta

SQL: Uma Linguagem de Consulta. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

DML. SQL (Select) Verificando estrutura da tabela

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Aula 10 BD 1 SQL Parte 2. Profa. Elaine Faria UFU

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Java Persistence Query Language JPQL

UFG - Instituto de Informática

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Banco de Dados. Maurício Edgar Stivanello

SQL. Introdução. Por que SQL? Setenças Select-From-Where

1.264 Aula 7. Introdução ao SQL

SQL. Structured Query Language. Copyright Prof. Edison Andrade Martins Morais

LABORATÓRIO DE BANCO DE DADOS

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

AULA 6 - Operações Espaciais

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

EXERCÍCIOS PRÁTICOS. Banco de Dados

Linguagem SQL - Structured Query Language

GOVERNO DO ESTADO DO RIO DE JANEIRO SECRETARIA DE ESTADO DE CIÊNCIA, TECNOLOGIA E INOVAÇÃO FUNDAÇÃO DE APOIO À ESCOLA TÉCNICA

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Portfólio do Aluno 2012 / º Ano Linguagem de Programação Módulo n.º Fábio Oliveira

Transcrição:

SQL Comandos para Relatórios e Formulários Laboratório de Bases de Dados

SELECT SELECT <lista de atributos e funções> FROM <lista de tabelas> [ WHERE predicado ] [ GROUP BY <atributos de agrupamento> ] [ HAVING <condição para agrupamento> ] [ ORDER BY <lista de atributos> ] ;

Funções de Agregação Funções Média: AVG( ) Mínimo: MIN( ) Máximo: MAX( ) Total: SUM( ) Contagem: COUNT( ) Observação DISTINCT: não considera valores duplicados ALL: inclui valores duplicados

Funções de Agregação Características recebem uma coleção de valores como entrada retornam um único valor Entrada sum( ) e avg( ): conjunto de números demais funções: tipos de dados numéricos e não-numéricos

Funções de Agregação vinho (vinho_id, nome_vinho, tipo_vinho, preço, vinícola_id) vinho_id nome_vinho tipo_vinho preço vinícola_id 10 Amanda tinto 100,00 1 09 Belinha branco 200,00 1 05 Camila rosê 300,00 1 15 Daniela branco 250,00 2 27 Eduarda branco 150,00 2 48 Fernanda tinto 7,00 2 13 Gabriela tinto 397,00 3 12 Helena branco 333,00 3

Exemplos Qual a média dos preços? SELECT AVG (preço) FROM vinho 217,125 Qual a soma dos preços? SELECT SUM (preço) FROM vinho 1737,00 Qual o preço mais baixo? SELECT MIN (preço) FROM vinho 7,00 Qual o preço mais alto? SELECT MAX (preço) FROM vinho 397,00

Exemplos Quantos vinhos existem na relação vinho? SELECT COUNT (vinho_id) FROM vinho 8 Quantos tipos de vinho diferentes existem na relação vinho? SELECT COUNT (DISTINCT tipo_vinho) FROM vinho 3

Cláusula GROUP BY Funcionalidade permite aplicar uma função de agregação não somente a um conjunto de tuplas, mas também a um grupo de conjunto de tuplas Grupo de conjunto de tuplas conjunto de tuplas que possuem o mesmo valor para os atributos de agrupamento Semântica da respostas atributos de agrupamento no GROUP BY também devem aparecer no SELECT

Exemplo Qual o preço mais alto e a média dos preços por tipo de vinho? SELECT tipo_vinho, MAX (preço) AS maior preço, AVG (preço) AS preço médio FROM vinho GROUP BY tipo_vinho

Solução As tuplas da tabela vinho são divididas em grupo, cada grupo contendo o mesmo tipo de valor para o atributo de agrupamento tipo_vinho vinho_id nome_vinho tipo_vinho preço vinícola_id 10 Amanda tinto 100,00 1 09 Belinha branco 200,00 1 05 Camila rosê 300,00 1 15 Daniela branco 250,00 2 27 Eduarda branco 150,00 2 48 Fernanda tinto 7,00 2 13 Gabriela tinto 397,00 3 12 Helena branco 333,00 3

Solução Considerações adicionais a função MAX e a função AVG são aplicadas a cada grupo de tuplas separadamente a cláusula SELECT inclui somente os atributos de agrupamento e as funções a serem aplicadas a cada grupo de tuplas o comando SELECT pode possuir cláusula WHERE de qualquer complexidade

Solução tipo_vinho maior preço preço médio branco 333 233,25 rosê 300 300 tinto 397 168

Funcionalidade Cláusula HAVING permite especificar uma condição de seleção para grupos, melhor do que para tuplas individuais Resposta recupera os valores para as funções somente para aqueles grupos que satisfazem à condição imposta na cláusula HAVING

Exemplo Qual o preço mais alto e a média dos preços por tipo de vinho, para médias de preços superiores a R$200,00 SELECT tipo_vinho, MAX (preço), AVG (preço) FROM vinho GROUP BY tipo_vinho HAVING AVG (preço) > 200 tipo_vinho max(preço) avg(preço) branco 333 233,25 rosê 300 300

Processamento da Consulta Passos aplica-se o predicado que aparece na cláusula WHERE coloca-se as tuplas que satisfazem a cláusula WHERE em grupos por meio da cláusula GROUP BY aplica-se a cláusula HAVING a cada grupo remove-se os grupos que não satisfazem o predicado da cláusula HAVING exibe-se as colunas listadas na cláusula SELECT

Esquema: Custo por Setor

Funções de Agregação ROLLUP e CUBE Estendidas permitem aos usuários elaborarem consultas SQL que executem funções semelhantes à cláusula GROUP BY geram agregação dos dados podem ser utilizadas para a construção de vários níveis de agregação a partir de níveis subjacentes já existentes

GROUP BY Quais as despesas do hospital em cada ano, separado pelos diferentes setores? SELECT d.ano_data Ano, s.nome_setor Setor, sum(f.custototalproduto) DespesaTotal FROM f_custoporsetor f JOIN dim_data d ON d.chave_data=f.chave_data JOIN dim_setor s ON s.chave_setor=f.chave_setor GROUP BY d.ano_data, s.nome_setor

ANO SETOR DESPESA TOTAL Resultado GROUP BY 2000 Limpeza 83618 2000 Lavanderia 92473,5 2000 Secretaria 74631 2000 Alimentação 135529,8 2000 Medicamentos 329780 2001 Limpeza 80571 2001 Lavanderia 126022,5 2001 Secretaria 87622,5 2001 Alimentação 141860,8 2001 Medicamentos 366360 2002 Limpeza 90396 2002 Lavanderia 108843 2002 Secretaria 66722 2002 Alimentação 146340,6 2002 Medicamentos 327750 2003 Limpeza 83492,5 2003 Lavanderia 95205 2003 Secretaria 80564,5 2003 Alimentação 120127,8 2003 Medicamentos 254150

Funcionalidade ROLLUP criação de subtotais que envolvem desde o nível mais detalhado até um total geral, seguindo uma lista de agrupamento especificada na cláusula ROLLUP Argumento lista ordenada de agrupamento de colunas

Processamento ROLLUP cálculo dos valores agregados padrões especificados na cláusula GROUP BY criação, de forma progressiva, de subtotais de nível mais alto, da esquerda para a direita na lista de agrupamento de colunas criação de um total geral Resultado n+1 níveis, sendo n o número de agrupamento de colunas

ROLLUP Quais as despesas do hospital em cada ano, separado pelos diferentes setores? SELECT d.ano_data Ano, s.nome_setor Setor, sum(f.custototalproduto) DespesaTotal FROM f_custoporsetor f JOIN dim_data d ON d.chave_data=f.chave_data JOIN dim_setor s ON s.chave_setor=f.chave_setor GROUP BY ROLLUP (d.ano_data, s.nome_setor)

Resultado ROLLUP Parte 1 ANO SETOR DESPESA TOTAL 2000 Limpeza 83618 2000 Lavanderia 92473,5 2000 Secretaria 74631 2000 Alimentação 135529,8 2000 Medicamentos 329780 2000 716032,3 2001 Limpeza 80571 2001 Lavanderia 126022,5 2001 Secretaria 87622,5 2001 Alimentação 141860,8 2001 Medicamentos 366360 2001 802436,8 2002 Limpeza 90396 2002 Lavanderia 108843 2002 Secretaria 66722 2002 Alimentação 146340,6 2002 Medicamentos 327750 2002 740051,6

Resultado ROLLUP ANO SETOR DESPESA TOTAL 2003 Limpeza 83492,5 2003 Lavanderia 95205 2003 Secretaria 80564,5 2003 Alimentação 120127,8 2003 Medicamentos 254150 2003 633539,8 2892060,5 Parte 2

Funcionalidade CUBE criação de subtotais para todas as combinações da lista de agrupamento especificada na cláusula CUBE criação do total geral Resultado 2n níveis, sendo n o número de agrupamento de colunas

Processamento CUBE cálculo dos valores agregados padrões especificados na cláusula GROUP BY criação, de forma progressiva, de subtotais de nível mais alto, para todas as combinações de dimensões na lista de agrupamento de colunas criação de um total geral

CUBE Quais as despesas do hospital em cada ano, separado pelos diferentes setores? SELECT d.ano_data Ano, s.nome_setor Setor, sum(f.custototalproduto) DespesaTotal FROM f_custoporsetor f JOIN dim_data d ON d.chave_data=f.chave_data JOIN dim_setor s ON s.chave_setor=f.chave_setor GROUP BY CUBE (d.ano_data, s.nome_setor)

Resultado CUBE Parte 1 ANO SETOR DESPESA TOTAL 2892060,5 Limpeza 338077,5 Lavanderia 422544 Secretaria 309540 Alimentação 543884 Medicamentos 1278040 2000 716032,3 2000 Limpeza 83618 2000 Lavanderia 92473,5 2000 Secretaria 74631 2000 Alimentação 135529,8 2000 Medicamentos 329780 2001 802436,8 2001 Limpeza 80571 2001 Lavanderia 126022,5 2001 Secretaria 87622,5 2001 Alimentação 141860,8 2001 Medicamentos 366360

Resultado CUBE ANO SETOR DESPESA TOTAL 2002 740051,6 2002 Limpeza 90396 2002 Lavanderia 108843 2002 Secretaria 66722 2002 Alimentação 146340,6 2002 Medicamentos 327750 2003 633539,8 2003 Limpeza 83492,5 2003 Lavanderia 95205 2003 Secretaria 80564,5 2003 Alimentação 120127,8 2003 Medicamentos 254150 Parte 2