Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — PROGEP FURG 2017

Banco de DadosPostgreSQL
Código
qg947294
Banca
PROGEP FURG
Órgão
FURG
Ano
2017
Cargo
PROGEP - - Tec ( )

A sequência de queries SQL abaixo cria a estrutura base de um banco de dados PostgreSQL que será utilizada na questão.

 

CREATE SCHEMA clube;

CREATE TABLE clube.socio (

id SERIAL,

primeiro_nome VARCHAR(40) NOT NULL,

sobrenome VARCHAR(200) NOT NULL,

endereco VARCHAR(200) NOT NULL,

telefone VARCHAR(20) NOT NULL,

recomendado_por INTEGER,

data_cadastro TIMESTAMP WITHOUT TIME ZONE NOT NULL,

CONSTRAINT socio_data_cadastro_key UNIQUE(data_cadastro),

CONSTRAINT socio_pkey PRIMARY KEY(id)

) WITH (oids = false);

CREATE TABLE clube.instalacao (

id SERIAL,

nome VARCHAR(200) NOT NULL,

custo_por_socio NUMERIC(10,2),

custo_por_convidado NUMERIC(10,2),

custo_inicial NUMERIC(10,2),

CONSTRAINT instalacao_pkey PRIMARY KEY(id)

) WITH (oids = false);

CREATE TABLE clube.agendamento (

id SERIAL,

id_socio INTEGER NOT NULL,

id_instalacao INTEGER NOT NULL,

inicio TIMESTAMP WITHOUT TIME ZONE NOT NULL,

fim TIMESTAMP WITHOUT TIME ZONE,

CONSTRAINT agendamento_pkey PRIMARY KEY(id),

CONSTRAINT agendamento_fk FOREIGN KEY (id_socio)

REFERENCES clube.socio(id)

ON DELETE RESTRICT ON UPDATE CASCADE

NOT DEFERRABLE,

CONSTRAINT agendamento_fk1 FOREIGN KEY (id_instalacao)

REFERENCES clube.instalacao(id)

ON DELETE RESTRICT ON UPDATE CASCADE

NOT DEFERRABLE

) WITH (oids = false);

 

Um sócio excêntrico quer alugar todas as instalações do clube para si mesmo, sem nenhum convidado. Qual query SQL abaixo apresenta o custo médio total, por instalação, que o sócio terá?

  1. ASELECT AVG(custo_por_socio + custo_inicial) FROM clube.instalacao WHERE custo_por_convidado IS NULL;
  2. BSELECT SUM(custo_por_socio) + SUM(custo_inicial) / COUNT(*) FROM clube.instalacao WHERE custo_por_convidado IS NULL;
  3. CSELECT AVG(COALESCE(custo_inicial, 0) + COALESCE(custo_por_socio, 0)) FROM clube.instalacao;
  4. DSELECT AVG(COALESCE(custo_por_socio, custo_inicial)) FROM clube.instalacao;
  5. ESELECT AVG(custo_inicial + 0) + AVG(custo_por_socio + 0) FROM clube.instalacao WHERE TRUE;
Revelar gabarito e comentário

GabaritoC — SELECT AVG(COALESCE(custo_inicial, 0) + COALESCE(custo_por_socio, 0)) FROM clube.instalacao;

Link permanente: /questoes/qg947294