I got a table "Product" and I want to calculate the number of Products which have the same price and assign this number to each product.
Table Product:
| Name | Price |
|---|---|
| A | 12 |
| B | 7 |
| C | 1 |
| D | 1 |
| E | 7 |
| F | 1 |
Expected Result:
| Name | Count |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
| D | 3 |
| E | 2 |
| F | 3 |
CodePudding user response:
If your DBMS supports Window Functions, you may try the following simple query:
select name, count(*) over (partition by price) as P_Count
from Products order by name;
Otherwise, you may try the following:
select T.name, D.P_count
from Products T inner join
(
select price,count(price) as P_Count
from Products
group by price) D
on T.price=D.price
order by T.name;
See a demo from here.
