SóProvas


ID
2852872
Banca
CESPE / CEBRASPE
Órgão
BNB
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Acerca de bancos de dados, julgue o item que segue.


Considere os seguintes comandos SQL.


WITH Numeros (num)

AS

(

SELECT 0 as num

union all

SELECT num + 3 as num

FROM Numeros

WHERE num <13

)

SELECT * FROM Numeros


É correto afirmar que o resultado da execução desses comandos é o seguinte.

0

3

6

9

12

Alternativas
Comentários
  • o resultado é "num"

    Alguem?

  • Se o parâmetro é o num, pode ser qualquer número menor que 13

    WHERE num <13

    exemplos positivos: 0,1,2,3.... = 0+3, 1+3, 2+3, 3+3...


    com o UNION da primeira consulta ficaria

    0

    3

    4

    5

    6



  • O comando WITH cria uma CTE (Common Table Expression), espécie de tablela temporária.

    O último select exibe os dados dessa tabela (numeros):

    0

    3

    6

    9

    12

    15

    Faltou a questão exibir o número 15.

    O comando pode ser testado no seguinte entedeço: https://rextester.com/l/sql_server_online_compiler

  • muita óbvia pra ser certa

    huauhauha

  • Só é pegar os números e colocar na condição! No caso o 12 não entraria pois somaria com + 3, resultando em 15, logo não passaria na condição que é (num <13) e assim não entraria como resposta. Se estiver errado me corrijam por favor ^^ grato.

  • Eu não conseguir entender. Alguém consegue explicar passo a passo?

  • Todos comentários são inúteis para fins de aprendizagem. Isso aqui não é rede social, caros colegas. Postem conteúdos relevantes sobre A QUESTÃO, obrigado!
  • Complementando o comentário de Danonis:

    O primeiro select seta num pra 0 e exibe

    então, tem-se a união com o segundo select, que estabelece num < 13 e exibe num + 3, de forma que vai exibir de 3 até 15 (que é quando num for 12), somando o último valor a 3

    Como sugerido, testei no endereço https://rextester.com/l/sql_server_online_compiler e o resultado é

    0

    3

    6

    9

    12

    15

  • Uma Common Table Expression (CTE) pode ser vista como um result set temporário que é definido no escopo de execução de uma única instrução SELECT, INSERT, UPDATE, DELETE, ou CREATE VIEW. Uma CTE é muito parecida com uma tabela derivada que não é armazenada como um objeto e que existe apenas durante a execução da consulta. Diferente de uma tabela derivada uma CTE pode ser auto-referenciada e pode ser referenciada várias vezes na mesma consulta.

    Podemos usar uma CTE para:

    O que acontece ali é uma consulta recursiva. Dai a resposta do pessoal.

  • para quem não estudou SQL Server mas o padrão SQL, esse WITH do SQL SERVER é igual ao WITH RECURSIVE dos livros textos de BD, para entender devem-se estudar consultas recursivas