Assuming you have something like:
CREATE TABLE tbl_compra
(
    id BIGINT PRIMARY KEY,
    nome_prod TEXT NOT NULL,
    cod_prod BIGINT NOT NULL,
    cod_cliente BIGINT NOT NULL,
    data_compra DATE NOT NULL
);
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  1, 'Sabonete', 1, 338, to_date('30/09/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  2, 'Pão',      2, 338, to_date('02/03/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  3, 'Alho',     3, 338, to_date('15/12/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  4, 'Cenoura',  4, 338, to_date('01/01/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  5, 'Água',     5, 587, to_date('30/09/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  6, 'Sabonete', 1, 587, to_date('02/03/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  7, 'Presunto', 6, 587, to_date('15/12/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  8, 'Alface',   7, 856, to_date('30/09/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES (  9, 'Sabonete', 1, 856, to_date('02/03/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES ( 10, 'Queijo',   8, 856, to_date('15/12/2017','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES ( 11, 'Sabonete', 1, 338, to_date('02/01/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES ( 12, 'Sabonete', 1, 879, to_date('12/02/2018','DD/MM/YYYY') );
INSERT INTO tbl_compra ( id, nome_prod, cod_prod, cod_cliente, data_compra ) VALUES ( 13, 'Sabonete', 1, 879, to_date('23/12/2017','DD/MM/YYYY') );
You can use the function max() combined with the clause GROUP BY:
SELECT
    cod_cliente,                          -- CODIGO DO CLIENTE
    count(1) AS qtd_compras,              -- QUANTIDADE TOTAL DE SABONETES COMPRADOS
    max(data_compra) AS data_ultima_compra -- DATA DA ULTIMA COMPRA DE UM SABONETE
FROM
    tbl_compra
WHERE
    nome_prod = 'Sabonete'
GROUP BY
    cod_cliente;
Exit:
| cod_cliente | qtd_compras | data_ultima_compra |
|-------------|-------------|--------------------|
|         338 |           2 |         2018-01-02 |
|         587 |           1 |         2018-03-02 |
|         856 |           1 |         2018-03-02 |
|         879 |           2 |         2018-02-12 |
Sqlfiddle: http://sqlfiddle.com/#! 17/c53a1/2
							
							
						 
can only 1 product per sale ? has sale code ?
– Rovann Linhalis
Tip make 1st the last purchase a subselect with MAX , use this as a virtual table , then just see who had 'soap' in this purchase.
– Motta
"Bread" and "Soap" have the even code ?!
– Lacobus
Sorry. Typo. Soap is 2 and Bread is 1.
– G. Brandão