introdução
neste artigo, aprenderemos a usar a função MAX agregada em nossos comandos POSTGRES SQL de várias perspectivas, para obter um nível mais profundo de compreensão. Aqui vamos discutir:
- o quê? Do ponto de vista iniciante, o que a função MAX faz?
- por quê? Em que situações devemos usar a função Max ()?
- como? Como usamos essa função em nosso SQL?
- mais também faremos algum uso do grupo por construct.
pré-requisitos
- compreensão de Nível Iniciante de escrever SQL para PostgreSQL (ou Oracle, MySQL, MS SQL Server, etc.) usando a ferramenta de administração PG ou alguma outra ferramenta de administração db, ou por meio de código ou script/linguagens de codificação como PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net, Ruby, Node.js, etc.) que fornecem uma conexão de banco de dados, bem como um método para enviar as consultas SQL do banco de dados, para obter dados ou fazer alterações no seu banco de dados.
- compreensão do uso de algumas instruções SQL básicas (PL/SQL), como
SELECT
,FROM
eGROUP BY
. - conhecimento do que são uma string e uma função.
Qual é a função MAX() e como funciona?
a função Postgres MAX()
retorna o valor mais alto (máximo) de um conjunto de números.
Sintaxe
1
|
i_highest_of_set := MAX(set_of_numbers);
|
Por que e quando podemos usar o MAX() função?
sempre que você tiver um conjunto de números em que deseja saber qual desse conjunto é o mais alto em conjunto.Vamos começar com um exemplo fácil
começaremos com um exemplo fácil de entender. Nosso conjunto de dados inicial é uma tabela chamada coding_languages.
id_tech | t_name | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
Na nossa empresa de desenvolvimento de software, a tabela acima chamado coding_languages
tem três campos, incluindo:
-
id_tech
é o nosso único identificador. -
t_name
é o nome da linguagem de codificação. -
i_rapid_dev
é uma avaliação inteira da rapidez com que um codificador médio pode se desenvolver usando a linguagem.
o objetivo é descobrir qual idioma tem a classificação mais alta em termos de desenvolvimento rápido (i_rapid_dev
). Vamos escrever nosso script SQL para usar a função MAX
para recuperar o t_name
que tem o valor mais alto na coluna i_rapid_dev
em nosso conjunto de registros de banco de dados PostgreSQL:
1
2 3 4 5 6 7 8 |
SELECIONE
id_tech , t_name , MAX(i_rapid_dev) DE coding_languages GRUPO i_rapid_dev; |
Nota: para o SQL exemplo acima: Isso é o que queremos utilizar o nosso conhecimento de SQL Grupos. Você pode pensar assim: se você quiser encontrar o máximo de mais de um número, você precisa considerar um conjunto de números.
como funciona a instrução SQL acima? Vamos dar um passo a passo:
- (1)
SELECT
: estamos dizendo ao SQL engine do PostgreSQL que queremos um máximo de todos os valores (porque nenhuma cláusula WHERE ou HAVING) na colunai_rapid_dev
. - (2)
FROM
: especificando a tabelacoding_languages
para recuperar nossos dados. - (3)
GROUP BY
: dizendo ao Postgres que queremos agrupar os dados. A função MAX (), sendo uma função agregada, requer o agrupamento de nossos dados.
a consulta acima retorna| / id_tech / t_name / i_rapid_dev||:—:|—|————:/ / 2 / PHP / 9 /
agora sabemos que o PHP é o mais rápido em termos de desenvolvimento rápido.
outro exemplo de uso da função SQL “Max” no PostgreSQL
o mini projeto: tínhamos funcionários classificando as tecnologias usadas em nossa empresa e queremos conhecer a tecnologia de maior classificação. Aqui vamos explorar outro uso relativamente simples de MAX()
enquanto introduzimos a palavra-chave” tendo”. Aqui está nosso conjunto de dados” raw “com o nome da tabela de”tecnologias”:
id_tech | t_name_user | t_name_tech | t_category_tech | i_grade |
---|---|---|---|---|
0 | Ted | Java | Lang | 4 |
1 | Bif | Mongo | NoSQL | 16 |
2 | Susan | MySQL | RDB | 8 |
3 | Tim | PostgreSQL | RDB | 16 |
4 | Gary | Python | Lang | 20 |
5 | Sammy | PHP | Lang | 12 |
Vamos plano de como proceder. Queremos construir uma consulta que fará mais de uma coisa, incluindo:
- (1) Considere apenas as linhas em nosso conjunto de dados onde o valor _t_categorytech field (column) é igual a “Lang”. É aqui que a cláusula HAVING é útil. Ele produzirá 3 linhas. Consegues ver porquê? Dica: procure na tabela acima o valor “Lang”. Observe que existem três? Em qual coluna eles estão?
- (2) devolva o valor no campo _t_nametech para essas 3 linhas porque queremos saber com quais tecnologias as notas combinam.
- (3) não nos importamos com quem fez a avaliação, portanto, nenhuma menção à coluna _t_nameuser.
- (4) Obtenha um máximo de soma dos valores dessas 3 linhas usando a coluna _igrade.
- (5) use GROUP BY para agrupar as colunas apropriadas.
análise do SQL acima:
- (1)
SELECT
: estamos filtrando nossa tabela Postgres para: (a) Mostre a colunat_name_tech
, (b) calcule a soma das notas (Sum(i_grade)
) para cada tecnologia fornecida e (c) mostre o máximo dessas somas (Max(i_sum_of_grades)
) e nomeie o resultado comoi_highest_grade
. - (2)
FROM
: especificando a tabelacoding_languages
como a fonte de nossos dados. - (3)
GROUP BY
: notificando PostgreSQL que estamos agrupando. A funçãoMAX
requer que agrupemos os dados que o Postgres está resumindo internamente e encontrando os mais altos. - (4)
HAVING
: é aqui que instruímos o PostgreSQL a filtrar nas linhas que têm “Lang” no campot_category_tech
.
A consulta acima retorna:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | Lang | 12 |
Notas
- Por que nós o nome de alguns de nossos variáveis e colunas da tabela com um prefixo “i” ou “t”? Usamos ” i “para significar inteiro e” t ” para significar texto ou string.
- convidamos você a procurar nossos outros artigos que utilizam a poderosa cláusula Postgres
GROUP BY
.
conclusão
aqui aprendemos quando e como é melhor usar a função MAX()
no PostgreSQL para encontrar o número de maior valor em um conjunto de números. Usamos tanto a iniciantes e de nível mais difícil exemplos, o dimensionamento de dificuldade, de modo a tornar o processo de aprendizagem mais fácil possível porque o SQL, às vezes, pode ser difícil de esquentar a cabeça, especialmente quando você usar o GROUP BY
e HAVING
cláusulas para trabalhar com subconjuntos de dados.