2

i have this table

| Name      | Born      | Live      | Age   |
|--------   |-------    |--------   |-----  |
| John      | UK        | UK        | 10    |
| Smith     | UK        | France    | 12    |
| Ben       | Spain     | Spain     | 15    |
| George    | Spain     | UK        | 25    |
| Ann       | UK        | UK        | 27    |
| Cassie    | Spain     | Spain     | 30    |

and i want this

| Name      | Born      | Live      | Age   | | Rank |
|--------   |-------    |--------   |-----  | |------|
| John      | UK        | UK        | 10    | |  1   |
| Ann       | UK        | UK        | 27    | |  2   |
| Smith     | UK        | France    | 12    | |  1   |
| Ben       | Spain     | Spain     | 15    | |  1   |
| Cassie    | Spain     | Spain     | 30    | |  2   |
| George    | Spain     | UK        | 25    | |  1   |

So i want a rank groupping by born and live.

I know that in SQL we can mae this using RANK AND PARTITION, but in MYSQl i cannot find a way to do this. Anyone can help?

Bill Karwin
  • 538,548
  • 86
  • 673
  • 828
user1851366
  • 256
  • 6
  • 20
  • 41

2 Answers2

2
SELECT Name, Born, Live,Age, 
   @rank := IF(@prev_born = Born, @rank + 1,1) AS Born_rank,
   @prev_Born := Born
FROM TABLE,(select @prev_born :=0,@rank :=0)  r
ORDER BY Born, Age ASC
Bugs
  • 4,491
  • 9
  • 32
  • 41
  • Although this code might work, it will be much more useful to the person asking the question if you could provide some insights... – joanolo Aug 23 '17 at 04:07
1

I think you should have a look at : Rank function in MySQL

Hope it will help you ;) !

Community
  • 1
  • 1
KatharaDarko
  • 259
  • 2
  • 15