Я не думаю, что вам не нужно создавать временную таблицу (или постоянную таблицу) для этого.Функция плотного ранга (намного проще в mysql 8 и выше), но здесь она смоделирована.
drop table if exists productsmarket;
CREATE table productsmarket (productname varchar(3),customer_username int);
insert into productsmarket values
('aaa',4),('aaa',2),('aaa',4),
('bbb',1),('bbb',4);
и customer
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | abc | 10 |
| 2 | def | 10 |
| 3 | ghi | 10 |
| 4 | jkl | 11 |
| 5 | jkl | 11 |
+------+------+------+
5 rows in set (0.04 sec)
select productname,age,obs,
if(productname <> @p, @rn:=1,if(obs <> @po,@rn:=@rn+1,@rn:=@rn)) denserank,
@p:=productname pname,
@po:=obs po
from
(
select productName,age,count(*) obs
from productsmarket
Inner Join customer on productsmarket.customer_username = customer.id
group by productName,age
) s
cross join (select @rn:=0,@p:=0,@po:=0) r
having denserank = 1
order by productname,obs desc
;
+-------------+------+-----+-----------+-------+----+
| productname | age | obs | denserank | pname | po |
+-------------+------+-----+-----------+-------+----+
| aaa | 11 | 2 | 1 | aaa | 2 |
| bbb | 10 | 1 | 1 | bbb | 1 |
| bbb | 11 | 1 | 1 | bbb | 1 |
+-------------+------+-----+-----------+-------+----+
Плотный ранг полезен в случае ничьих.