PostgreSQL

Pivô com / sem função de tabela

Pivô com / sem função de tabela

Uma Tabela Dinâmica é uma ferramenta poderosa para estimar, compilar e revisar dados para encontrar padrões e tendências ainda mais fácil. As tabelas dinâmicas podem ser usadas para agregar, classificar, organizar, reorganizar, agrupar, total ou média de dados em um conjunto de dados para compreender verdadeiramente as associações e dependências de dados. Usar uma tabela dinâmica como ilustração é a maneira mais fácil de demonstrar como esse método funciona. PostgreSQL 8.3 foi lançado há alguns anos, e uma nova versão chamada 'função de mesa' foi adicionado. Tablefunc é um componente que contém vários métodos que geram tabelas (ou seja, várias linhas). Esta modificação vem com uma variedade de recursos muito interessantes. O método crosstab, que será usado para criar tabelas dinâmicas, está entre eles. O método crosstab recebe um argumento textual: um comando SQL que retorna dados brutos no primeiro layout e retorna uma tabela no layout subsequente.

Exemplo de tabela dinâmica sem TableFunc:

Para começar a trabalhar na dinâmica do PostgreSQL com o módulo 'tablefunc', você deve tentar fazer uma tabela dinâmica sem ela. Então, vamos abrir o shell de linha de comando do PostgreSQL e fornecer os valores de parâmetro para o servidor, banco de dados, número da porta, nome de usuário e senha necessários. Deixe estes parâmetros vazios se você quiser usar os parâmetros padrão selecionados.

Estaremos criando uma nova tabela chamada 'Teste' no banco de dados 'teste' com alguns campos, conforme mostrado abaixo.

>> CREATE TABLE Test (Id int, nome varchar (20), sal int, job varchar (20));

Depois de criar uma tabela, é hora de inserir alguns valores na tabela, conforme mostrado na consulta abaixo.

>> INSERT INTO Test (Id, name, sal, job) VALUES (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', 50000, 'Doutor'), (12, 'Raza', 40000, 'Oficial'), (11, 'Raza', 60000, 'Doutor'), (12, 'Raza', 67000, 'Oficial'), ( 13, 'Saeed', 85000, 'Escritor'), (13, 'Saeed', 69000, 'Oficial'), (13, 'Saeed', 90000, 'Doutor');

Você pode ver que os dados relevantes foram inseridos com sucesso. Você pode ver que esta tabela tem mais de 1 dos mesmos valores para id, nome e trabalho.

>> SELECT * FROM input;

Vamos criar uma tabela dinâmica, que irá resumir o registro da tabela 'Teste' usando a consulta abaixo. O comando mescla os mesmos valores das colunas 'Id' e 'nome' em uma linha enquanto obtém a soma dos valores da coluna 'salário' para os mesmos dados de acordo com 'Id' e 'nome'. Também informa quantas vezes um valor ocorreu em um determinado conjunto de valores.

>> SELECIONE Id, nome, soma (sal) sal, soma ((job = 'Doctor') :: int) Doctor, sum ((job = 'Writer') :: int) Writer, sum ((job = 'Officer ') :: int) "Officer" FROM Test GROUP BY Id, name;

Exemplo de tabela dinâmica com TableFunc:

Começaremos explicando nosso ponto principal de um ponto de vista realista e, em seguida, descreveremos a criação da tabela dinâmica em etapas que gostamos. Então, primeiro de tudo, você tem que adicionar três tabelas para trabalhar em um pivô. A primeira tabela que vamos criar é 'Maquiagem', que armazenará informações sobre os fundamentos da maquiagem. Tente a consulta abaixo no shell da linha de comando para criar esta tabela.

>> CREATE TABLE IF NOT EXISTS Makeup (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

Após a criação da tabela 'Maquiagem', vamos adicionar alguns registros a ela. Estaremos executando a consulta listada abaixo no shell para adicionar 10 registros a esta tabela.

Precisamos criar outra tabela chamada 'usuários' que manterá os registros dos usuários que usam esses produtos. Execute a consulta abaixo indicada no shell para criar esta tabela.

>> CRIAR TABELA SE NÃO EXISTIR usuários (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Inserimos os 20 registros para a tabela 'usuários' conforme mostrado na imagem abaixo.

Temos outra tabela, 'makeup_user', que manterá os registros mútuos das tabelas 'Makeup' e 'users'. Possui outro campo, 'preço', que salvará o preço do produto. A tabela foi gerada usando a consulta indicada abaixo.

>> CRIAR TABELA SE NÃO EXISTIR makeup_user (ID int PRIMARY KEY, Mid int NOT NULL REFERENCES Makeup (make_Id), Uid int NOT NULL REFERENCES users (user_id), preço decimal (18,2));

Inserimos um total de 56 registros nesta tabela, conforme mostra a figura.

Vamos criar uma visão adicional para usá-la para a geração de uma tabela dinâmica. Esta visualização está usando INNER Join para corresponder aos valores da coluna de chave primária de todas as três tabelas e buscar o 'nome', 'product_name' e o 'custo' de um produto de uma tabela 'clientes'

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, p.p_name, pc.preço DE usuários c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p ON pc.Mid = p.make_Id;

Para usar isso, você deve primeiro instalar o pacote tablefunc para o banco de dados que deseja usar. Este pacote é integrado ao PostgreSQL 9.1 e mais tarde lançado executando o comando abaixo indicado. O pacote tablefunc foi habilitado para você agora.

>> CRIAR EXTENSÃO SE NÃO EXISTIR tablefunc;

Depois de criar a extensão, é hora de usar a função Crosstab () para criar uma tabela dinâmica. Portanto, usaremos a seguinte consulta no shell da linha de comando para fazer isso. Esta consulta busca primeiro o registro da 'Visualização' recém-criada. Esses registros serão ordenados e agrupados pela ordem crescente das colunas 'u_name' e 'p_name'. Listamos seus nomes de maquiagem para cada cliente, que eles compraram, e o custo total dos produtos comprados na tabela. Aplicamos o operador UNION ALL na coluna 'p_name' para somar todos os produtos adquiridos por um cliente separadamente. Isso irá somar todos os custos dos produtos adquiridos por um usuário em um valor.

Nossa tabela dinâmica está pronta e exibida na imagem. Você pode ver claramente que alguns espaços de coluna estão vazios abaixo de cada p_name porque eles não compraram aquele produto específico.

Conclusão:

Agora aprendemos brilhantemente como criar uma tabela dinâmica para resumir os resultados das tabelas com e sem o uso do pacote Tablefunc.

Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...
Adicione gestos do mouse ao Windows 10 usando essas ferramentas gratuitas
Nos últimos anos, os computadores e sistemas operacionais evoluíram muito. Houve um tempo em que os usuários tinham que usar comandos para navegar pel...
Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...