

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Analise a definição da tabela “cidade_usuario”, bem como os registros que foram inseridos. Responda as questões 18 e 19, considerando o script 2.
create table cidade_usuario ( cidade character varying(50), usuario_id integer, primary key(cidade, usuario_id) );
insert into cidade_usuario values ('CAXIAS DO SUL', 124250), ('PORTO ALEGRE', 124277), ('BENTO GONÇALVES', 124333), ('RIO GRANDE', 124305), ('RIO GRANDE', 124247), ('PORTO ALEGRE', 124326), ('PORTO ALEGRE', 124306); |
Script 2
Qual consulta SQL seria necessária executar no banco de dados PostgreSQL, versão 9.2, utilizando funções nativas, para que o resultado produzido seja EXATAMENTE igual aos valores obtidos na figura 4?
. | cidade character varying (50) | usuarios text |
1 | BENTO GONÇALVES | 124333 |
2 | CAXIAS DO SUL | 124250 |
3 | PORTO ALEGRE | 124326 | 124306 | 124277 |
4 | RIO GRANDE | 124305 | 124247 |
Figura 4 - Resultado esperado.
with q1 as (select * from cidade_usuario order by usuario_id desc)
select q1.cidade, string_concat(q1.usuario_id, ' | ') as usuarios
from q1 group by q1.cidade order by 2
with q1 as (select * from cidade_usuario order by usuario_id desc)
select q1.cidade, concat_values(q1.usuario_id, ' | ') as usuarios
from q1 group by q1.cidade order by 1
with q1 as (select * from cidade_usuario order by usuario_id desc)
select q1.cidade, string_concat(array_agg(q1.usuario_id), ' | ') as usuarios
from q1 group by q1.cidade order by 1
with q1 as (select * from cidade_usuario order by usuario_id)
select q1.cidade, array_to_string(array_agg(q1.usuario_id), ' | ') as usuarios
from q1 group by q1.cidade order by 2
with q1 as (select * from cidade_usuario order by usuario_id desc)
select q1.cidade, array_to_string(array_agg(q1.usuario_id), ' | ') as usuarios
from q1 group by q1.cidade order by 1