segunda-feira, 25 de novembro de 2013

Obtendo o valor máximo de uma soma com PostgreSQL

Olá galera,

Hoje falarei sobre a consulta que precisei fazer em um projeto. A idéia é capturar somente os valores máximos das somas dessa consulta. Por se tratar de um "SQL" não muito básico, resolvi compartilhar minha solução utilizando SUM e MAX.

Para exemplificar a situação, vamos adotar uma tabela chamada loja com os valores hipotéticos abaixo:

categoria produto quantidade
Informática Notebook 15
Informática Notebook 20
Informática Mouse 45
Informática Mouse 30
Informática Monitor 25
Informática Monitor 5
Eletrônicos DVD Player 2
Eletrônicos DVD Player 15
Eletrônicos DVD Player 34
Eletrônicos Fone de ouvido 1
Eletrônicos Fone de ouvido 22
Eletrônicos Fone de ouvido 62
Eletrônicos Calculadora 6
Eletrônicos Calculadora 14
Eletrônicos Calculadora 9
Automotivos GPS 3
Automotivos GPS 7
Automotivos GPS 8
Automotivos Rodas 60
Automotivos Rodas 9
Automotivos Alarme 19
Automotivos Alarme 23

Executando a consulta somente com SUM.

SELECT categoria, produto, SUM(quantidade) AS quantidade
FROM loja 
GROUP BY categoria, produto

Obteremos o resultado.

categoria produto quantidade
Informática Notebook 35
Informática Mouse 75
Informática Monitor 30
Eletrônicos DVD Player 51
Eletrônicos Fone de ouvido 85
Eletrônicos Calculadora 29
Automotivos GPS 18
Automotivos Rodas 69
Automotivos Alarme 42

Até agora, não temos complexidade. Só que o resultado desejado é como a tabela abaixo.

categoria produto quantidade
Informática Mouse 75
Eletrônicos Fone de ouvido 85
Automotivos Rodas 69

A consulta seria simples se tivéssemos que exibir somente a coluna categoria e quantidade sem a coluna produto. Pensei em algumas possibilidades, que incluíam o uso do HAVING e WHERE, mas a obrigatoriedade do GROUP BY me fez pensar em outra alternativa. Segue abaixo minha solução.

SELECT a.categoria, a.produto, a.quantidade
FROM (
   SELECT i.categoria, i.produto, SUM(i.quantidade) AS quantidade
   FROM loja i
   GROUP BY i.categoria, i.produto
) AS a
INNER JOIN (
   SELECT t.categoria, MAX(t.quantidade) as quantidade
   FROM (
      SELECT j.categoria, j.produto, SUM(j.quantidade) AS quantidade
      FROM loja j
      GROUP BY j.categoria, j.produto
   ) AS t
   GROUP BY t.categoria
) AS b
ON a.categoria = b.categoria AND a.quantidade = b.quantidade;

Você realizou a consulta de uma forma diferente?! Envie seu comentário e compartilhe conosco.

Grande abraço a todos e até a próxima.

segunda-feira, 18 de novembro de 2013

Tutorial GeoServer - Configuração

Olá galera,

Dando continuidade a série de vídeos tutoriais sobre o GeoServer, hoje iremos eliminar as mensagens de alerta da tela inicial.

O arquivo utilizado no vídeo pode ser baixado no link http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

Um grande abraço a todos e até a próxima.

quarta-feira, 13 de novembro de 2013

Tutorial GeoServer - Diretório Data

Olá galera,

Dando continuidade a série de vídeos tutoriais sobre o GeoServer, hoje iremos alterar o diretório padrão onde ficam armazenados os dados do GeoServer.

OBS: Essa modificação afeta os dados e configurações do GeoServer. Caso já tenha sido feita alguma alteração de senha ou nas camadas, esses dados serão "perdidos" conforme menciono no vídeo. No próximo vídeo tutorial iremos ignorar essa etapa e considerar que estamos adotando o diretório padrão.

Um grande abraço a todos e até a próxima.

domingo, 10 de novembro de 2013

Tutorial GeoServer - Instalação

Olá galera,

Hoje daremos início a série de vídeos tutoriais sobre o GeoServer. O vídeo que segue só vai abordar a montagem do ambiente e a instalação do servidor de mapas.

Abaixo segue o resumo dos comandos utilizados no vídeo.

Adicionando o repositório e instalando o Oracle Java

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

Instalando o Tomcat 7

sudo apt-get install tomcat7

Instalando o GeoServer

sudo cp geoserver.war /var/lib/tomcat7/webapps
sudo /etc/init.d/tomcat7 stop
sudo /etc/init.d/tomcat7 start

Um grande abraço a todos e até a próxima.

segunda-feira, 4 de novembro de 2013

Habilitando o JSON no PHP 5.5.3 no Ubuntu 13.10

Olá galera,

Após instalar o Ubuntu 13.10, resolvi remontar meu ambiente de desenvolvimento.

A versão do PHP disponível no repositório é a 5.5.3. Nessa versão, a extensão JSON já não é mais instalada por padrão. Com isso, podem ocorrer erros do tipo PHP Fatal error: Call to undefined function json_encode() ou PHP Fatal error: Call to undefined function json_decode() caso a aplicação utilize alguma dessas funções.

Abaixo segue o comando no qual vou instalar um PHP do zero. Caso você já tenha feito a instalação, verifique quais os pacotes que estão faltando.

sudo apt-get install php5 php5-gd php5-pgsql php5-cli php5-cgi libapache2-mod-php5 php-pear php5-dev

Instalando e configurando a extensão do JSON.

cd /usr/bin
sudo pecl install jsonc
cd /etc/php5/mods-available
sudo touch json.ini
sudo gedit json.ini

Adicione o conteúdo abaixo ao arquivo json.ini, salve e feche.

    ; configuration for php JSON module
    ; priority=20
    extension=json.so
  

Agora vamos habilitar a extensão para o PHP e para o Apache.

cd /etc/php5/cli/conf.d
ln -s ../../mods-available/json.ini 20-json.ini
cd /etc/php5/apache2/conf.d
ln -s ../../mods-available/json.ini 20-json.ini

Bem pessoal, espero que a dica tenha sido útil.

Um grande abraço e até a próxima.