-
GREATEST
●Função Oracle que aceita uma lista de uma ou mais epxressões e retorna a maior dessas expressões
● Se as expressões forem números, o valor retornado é o maior número na lista
● Se as expressões não forem numéricas, as expressões serão todas convertidas no tipo de dados da primeira expressão
GREATEST( expr1 [, expr2, ... expr_n] )
Silvio
-
Não entendi bem, ele converte as letras no número que ela vale no alfabeto?
-
Também não entendi por essa explicação.
Pesquisemos em outras fontes para tirar a dúvida.
-
Oracle faz a comparação baseada em uma tabela de códigos numéricos para cada caracter,que por sinal é baseada no character set do banco. Sendo assim um character é maior que outro se o seu número dele na tabela de códigos é maior que o numero do outro caracter.
http://profissionaloracle.com.br/gpo/servicos/easyblog/entry/2008/12/09/usando-greatest-e-least
-
https://docs.oracle.com/database/121/SQLRF/functions078.htm#SQLRF00645
https://docs.oracle.com/database/121/SQLRF/sql_elements002.htm#SQLRF51043
-
Exemplos:
GREATEST(2,5,6,2) --> retorna 6
GREATEST(2,null,6,2) --> retorna null
Estas funções aceitam argumentos de qualquer tipo, inclusive argumentos do tipo DATE.
Se um dos valores passados no GREATEST() for NULL, a função retorna NULL.
-
nehum comentario explica o gabarito, se for numero é facil, nome nao entendi
-
Está em inglês, mas está bem fácil de entender.
https://www.youtube.com/watch?v=Xh5Lz0rOFsQ
-
vou tentar explicar aqui OK?
o conceito do comando é: " aceita uma lista de uma ou mais expressões e retorna a maior dessas expressões"
como temos "strings" no SELECT vamos se basear ALFABETO
SELECT GREATEST ('Olavo', 'Pedro', 'Silvio', 'Armando');
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
OLAVO inicia com 'O" então ele está na frente do P no alfabeto? Não, então ele já esta descartado porquÊ ele também está atrás do S de Silvio e na frente do A do Armando, logo o a letra O de olavo não é o maior numero dessa lista e pela analise nem o A de armando.
Sobraram Pedro e Silvio para analisar
lendo o alfabeto da esquerda para a direita temos que P < S porquê P se encontra antes de S no alfabeto logo ele não era o maior dessa. então sobra quem ? S porque este esta na frente de A , O e P e não tem mais ninguem na lista que seja maior que ele (T,U,V,W,X,Y,Z)
resultado do select então é SILVIO
falows...
-
A função GREATEST retorna o maior valor em uma lista, mas não confunda com a função MAX,
ela retornará o maior valor de uma lista especificada na consulta.
Ex.:
SELECT GREATEST(1, 2, 3, 4, 5, 11, 20)
FROM DUAL;
Retornará o valor 20 dessa lista.
-
A função GREATEST retorna o maior valor em uma lista, mas não confunda com a função MAX,
ela retornará o maior valor de uma lista especificada na consulta.
Ex.:
SELECT GREATEST(1, 2, 3, 4, 5, 11, 20)
FROM DUAL;
Retornará o valor 20 dessa lista.
-
https://www.techonthenet.com/oracle/functions/greatest.php
"If the comparison is based on a character comparison, one character is considered greater than another if it has a higher character set value."
Vamos pensar na tabela ASC:
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
-
Função GREATEST para "não numéricos" vai retornar o "maior", considerando-se a ordem alfabética crescente.
No caso em questão: A (Armando) B C D E F G H I J K L M N O (Olavo) P (Pedro) Q R S (Sílvio)T U V W X Y Z
Foi o que entendi!