Assuming a structure similar to yours:
CREATE TABLE IDENTIFICACAO_PESSOA
(
PESSOA_FK BIGINT,
CATEGORIA_IDENTIFICACAO_FK character varying(1)
);
With the following test data:
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 1 , 'B' );
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 2 , 'A' );
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 2 , 'B' );
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 2 , 'C' );
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 3 , 'X' );
INSERT INTO IDENTIFICACAO_PESSOA ( PESSOA_FK, CATEGORIA_IDENTIFICACAO_FK ) VALUES ( 4 , 'Y' );
Your query would look like this:
SELECT
DISTINCT
PESSOA_FK AS id_pessoa,
COUNT(1) AS qtd_categorias
FROM
IDENTIFICACAO_PESSOA
GROUP BY
PESSOA_FK
HAVING
COUNT(1) > 1;
SQL Fiddle: http://sqlfiddle.com/#! 17/22a21/1/0
There’s some prank going on that I’m having trouble identifying. If I use only PESSOA_FK it brings many records but I need to know the amount of CATEGORY each person has.
– Roknauta