SóProvas


ID
2857564
Banca
FCC
Órgão
MPE-PE
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

O sistema gerenciador de bancos de dados Oracle 12c possui a função GREATEST, inserida no seguinte comando do PLSQL:


SELECT GREATEST ('Olavo', 'Pedro', 'Silvio', 'Armando');


Tal comando tem como resultado

Alternativas
Comentários
  • 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!