Tenho as seguintes tabelas:
CREATE TABLE "QUARTOS"
(
    "numero_quarto" VARCHAR(5) NOT NULL, 
    "tipo_quarto" INTEGER NOT NULL, 
    "valor_quarto" NUMERIC(7,2) NOT NULL, 
    "capacidade_quarto" SMALLINT NOT NULL, 
    CONSTRAINT TIPOQUARTO_FK FOREIGN KEY("tipo_quarto") REFERENCES
"TIPOSQUARTO"("id_tipoquarto") ON UPDATE CASCADE,
    CONSTRAINT QUARTOS_PK PRIMARY KEY(numero_quarto)
);

CREATE TABLE "PESSOAS"
(
    "id_pessoa" SERIAL NOT NULL,
    "nome_pessoa" VARCHAR(50) NOT NULL, 
    "endereco_pessoa" INTEGER NOT NULL, 
    "telefone_pessoa" VARCHAR(14), 
    "email_pessoa" VARCHAR(100), 
    "login_pessoa" VARCHAR(20), 
    "senha_pessoa" VARCHAR(32), 
    "tipo_pessoa" SMALLINT NOT NULL DEFAULT 1,
    "endnum_pessoa" VARCHAR(5) NOT NULL,
    CONSTRAINT PESSOAS_EMAIL_UK UNIQUE("email_pessoa"), 
    CONSTRAINT PESSOAS_LOGIN_UK UNIQUE("login_pessoa"), 
    CONSTRAINT ENDERECO_FK FOREIGN KEY("endereco_pessoa") REFERENCES
"ENDERECOS"("id_endereco") ON UPDATE CASCADE,
    CONSTRAINT PESSOAS_PK PRIMARY KEY(id_pessoa)
);

CREATE TABLE "CLIENTES"
(
    "pessoa_cliente" INTEGER NOT NULL, 
    "rg_cliente" VARCHAR(20) NOT NULL, 
    "cpf_cliente" VARCHAR(11) NOT NULL, 
    CONSTRAINT PESSOA_FK FOREIGN KEY("pessoa_cliente") REFERENCES
"PESSOAS"("id_pessoa") ON UPDATE CASCADE,
    CONSTRAINT clientes_rg_ukey UNIQUE("rg_cliente"),
    CONSTRAINT clientes_cpf_ukey UNIQUE("cpf_cliente"),
    CONSTRAINT CLIENTES_PK PRIMARY KEY(pessoa_cliente)
);

CREATE TABLE "ESTADIAS"
(
    "id_estadia" SERIAL NOT NULL, 
    "cliente_estadia" INTEGER NOT NULL, 
    "quarto_estadia" VARCHAR(5) NOT NULL, 
    "entrada_estadia" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "saida_estadia" TIMESTAMP(0), 
    "valor_estadia" NUMERIC(7,2),
    "valortotal_estadia" NUMERIC(7,2)
    CONSTRAINT CLIENTE_FK FOREIGN KEY("cliente_estadia") REFERENCES
"CLIENTES"("pessoa_cliente"), 
    CONSTRAINT QUARTO_FK FOREIGN KEY("quarto_estadia") REFERENCES
"QUARTOS"("numero_quarto"), 
    CONSTRAINT ESTADIA_CLI_QUA_ENT_UKEY
UNIQUE("cliente_estadia","quarto_estadia","entrada_estadia"),
    CONSTRAINT ESTADIAS_PK PRIMARY KEY(id_estadia)
);


CREATE TABLE "LIGACOES"
(
    "quarto_ligacao" VARCHAR(5) NOT NULL, 
    "datahora_ligacao" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "numero_ligacao" VARCHAR(14) NOT NULL, 
    "duracao_ligacao" NUMERIC(7,2), 
    "valortotal_ligacao" NUMERIC(7,2),
    "tipo_ligacao" INTEGER NOT NULL DEFAULT 1,
    CONSTRAINT LIGACOES_PK PRIMARY
KEY("quarto_ligacao","datahora_ligacao"), 
    CONSTRAINT QUARTO_FK FOREIGN KEY("quarto_ligacao") REFERENCES
"QUARTOS"("numero_quarto"), 
    CONSTRAINT TIPO_FK FOREIGN KEY(tipo_ligacao) REFERENCES
"TIPOSLIGACAO"("id_tipoligacao")
);


Meu select está dando erro dizendo que eu preciso usar
"PESSOAS".nome_pessoa na clausula GROUP BY. Seu eu fiser como pede ela
passa a pedir as outras colunas também.

SELECT
    "PESSOAS".nome_pessoa,
    "CLIENTES".rg_cliente,
    "CLIENTES".cpf_cliente,
    "ESTADIAS".quarto_estadia,
    "ESTADIAS".entrada_estadia,
    CURRENT_DATE - DATE("ESTADIAS".entrada_estadia) AS diarias,
    "ESTADIAS".valor_estadia,
    SUM("LIGACOES".valortotal_ligacao) AS totalligacoes
FROM
    "ESTADIAS" 
JOIN
    "PESSOAS" ON "PESSOAS".id_pessoa = "ESTADIAS".cliente_estadia 
JOIN 
    "CLIENTES" ON "CLIENTES".pessoa_cliente =
"ESTADIAS".cliente_estadia 
JOIN 
    "LIGACOES" ON "LIGACOES".quarto_ligacao = "ESTADIAS".quarto_estadia 
AND
    "LIGACOES".datahora_ligacao >= "ESTADIAS".entrada_estadia 
WHERE
    "ESTADIAS".id_estadia = 1


Segue o erro


"ERROR:  column "PESSOAS.nome_pessoa" must appear in the GROUP BY clause
or be used in an aggregate function
LINE 2:     "PESSOAS".nome_pessoa,
            ^"

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a