add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE transactions(
Id INTEGER NOT NULL PRIMARY KEY
,payee VARCHAR(7) NOT NULL
,exp NUMERIC(5,2) NOT NULL
,category VARCHAR(9) NOT NULL
);
INSERT INTO transactions(Id,payee,exp,category) VALUES (1,'Amazon',25.00,'Gifts');
INSERT INTO transactions(Id,payee,exp,category) VALUES (2,'Amazon',30.21,'Books');
INSERT INTO transactions(Id,payee,exp,category) VALUES (3,'Amazon',12.98,'Gifts');
INSERT INTO transactions(Id,payee,exp,category) VALUES (4,'Amazon',15.00,'Groceries');
INSERT INTO transactions(Id,payee,exp,category) VALUES (5,'Amazon',14.54,'Gifts');
INSERT INTO transactions(Id,payee,exp,category) VALUES (6,'Alibaba',55.55,'Stock');
INSERT INTO transactions(Id,payee,exp,category) VALUES (7,'Alibaba',99.00,'Stock');
INSERT INTO transactions(Id,payee,exp,category) VALUES (8,'Alibaba',12.00,'Fun');

select payee, cnt, category
from (
select
payee,
count(*) cnt,
category,
rank() over(partition by payee order by count(*) desc) rn
from transactions
group by category, payee
) t
where rn = 1
payee cnt category
Alibaba 2 Stock
Amazon 3 Gifts