Skip to content

Instantly share code, notes, and snippets.

@reinaldorauch
Last active August 29, 2015 14:10
Show Gist options
  • Save reinaldorauch/83d5f0bdb34959de91b4 to your computer and use it in GitHub Desktop.
Save reinaldorauch/83d5f0bdb34959de91b4 to your computer and use it in GitHub Desktop.
-- -----------------------------------------------------------------------------
-- View que retona o id do cliente e a quantidade de solicitações que este
-- cliente tem
-- -----------------------------------------------------------------------------
CREATE VIEW vw_count_compras_clientes AS
SELECT
-- id do cliente
id_cliente,
-- conta a quantidade de solicitações do cliente
count(id_solicitacao) as qtd_sol
FROM
solicitacao
WHERE
-- Condição para que a solicitação esteja paga
status = 'A'
GROUP BY id_cliente;
-- -----------------------------------------------------------------------------
-- Select que verifica a maior quantidade de solicitações e relaciona com a
-- própria view para extrair o id do cliente e assim retornar o cliente
-- -----------------------------------------------------------------------------
SELECT
-- Todos os campos de cliente
c.*
FROM
(SELECT
-- Retorna o maior valor de quantidade de solicitação
MAX(qs.qtd_sol) as max_qtd_sol
FROM
vw_count_compras_clientes qs) ms
INNER JOIN
-- Junta a a maior quantidade de solicitação com a quantidade de solicitação
-- na view
vw_count_compras_clientes qs ON ms.max_qtd_sol = qs.qtd_sol
INNER JOIN
-- Junção do id cliente extraído da view com a tabela de clientes
cliente c ON c.id_cliente = qs.id_cliente;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment