Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

mysql: how to select group by first character and top 5 by counter

my table look like following

id  person  counter
1   Ona     4946
2   Mayra   15077
3   Claire  496
4   Rita    13929
5   Demond  579
6   Winnifred   13580
7   Green   1734
8   Jacquelyn   19092
9   Aisha   5572
10  Kian    8826
11  Alexandrea  7514
12  Dalton  14151
13  Rossie  18403
14  Carson  19537
15  Mason   2022
16  Emie    2394
17  Jonatan 6655
18  June    5037
19  Jazmyn  10856
20  Mittie  18928

here is the fiddle

i would like to select the top 5 by counter and group by first character, here is the sql that i tried:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

SELECT SUBSTR(person,1,1) AS Alpha, person, counter
FROM myTable
GROUP BY SUBSTR(person,1,1)
ORDER BY SUBSTR(person,1,1) ASC, counter DESC;

how to select desired result as following:

alpha   person      counter
a       Arvid       9236
a       Aisha       5572
a       Alf         4000
a       Ahmad       3500
a       Alvin       2100
b       Brandon     13000
b       Ben         8230
b       Bonny       7131
b       Bella       4120
b       Bun         1200
c       Connie      9320
c       Calvin      8310
c       Camalia     6123
c       Cimon       3419
c       Clay        2515

im using mysql 8.0

>Solution :

You can do:

select *
from (
  select *, row_number() over(partition by substr(person, 1, 1) 
                              order by counter desc) as rn
  from myTable
) x
where rn <= 5
order by substr(person, 1, 1), rn

Result:

 id   person     counter  rn 
 ---- ---------- -------- -- 
 153  Alf        19758    1  
 283  Alycia     19706    2  
 260  Abe        19463    3  
 223  Assunta    18808    4  
 300  Ari        18031    5  
 210  Bennie     18309    1  
 159  Barry      18281    2  
 128  Beulah     18080    3  
 314  Benny      16795    4  
 474  Barry      15789    5  
 342  Casandra   19656    1  
 14   Carson     19537    2  
 67   Chaim      19429    3  
 280  Colin      18507    4  
 500  Corbin     18433    5  
 380  Daphney    19138    1  
 234  Dejah      18781    2  
 241  Derrick    18722    3  
 49   Dasia      18562    4  
 312  Darrel     17903    5  
 163  Evalyn     19847    1  
 79   Ernestine  19523    2  
 344  Emilie     19520    3  
 371  Eva        19119    4  
 469  Emma       18403    5  
 140  Fiona      19522    1  
 216  Flo        18314    2  
 356  Frieda     16082    3  
 254  Floy       15942    4  
 54   Florencio  12739    5  
 447  Geoffrey   19858    1  
 327  Geoffrey   19223    2  
 335  Grant      19100    3  
 454  Giuseppe   16175    4  
 83   Gardner    15235    5  
 373  Hilario    19507    1  
 35   Hanna      19276    2  
 200  Halle      18150    3  
 491  Hailee     17521    4  
 411  Hermann    17018    5  
 21   Idella     7440     1  
 177  Izabella   5536     2  
 115  Isai       4164     3  
 412  Izabella   2112     4  
 275  Imani      573      5  
 195  Joannie    19374    1  
 8    Jacquelyn  19092    2  
 48   Jalon      18861    3  
 251  Jamie      18768    4  
 367  Joanny     17600    5  
 282  Kendra     19278    1  
 421  Kendra     19213    2  
 363  Kaylin     18977    3  
 96   Kaylie     18423    4  
 310  Katrine    17754    5  
 146  Lonzo      19778    1  
 194  Leonora    18258    2  
 399  Laurine    16847    3  
 137  Leslie     16718    4  
 190  Luther     16318    5  
 87   Maegan     19112    1  
 20   Mittie     18928    2  
 271  Mariana    18149    3  
 317  Mary       18043    4  
 305  Maybelle   17666    5  
 281  Noelia     19203    1  
 176  Nickolas   19047    2  
 408  Nelson     15901    3  
 142  Nasir      13700    4  
 366  Nicole     10694    5  
 423  Ova        19759    1  
 487  Osborne    19539    2  
 438  Ozella     18911    3  
 375  Ora        18270    4  
 414  Onie       17358    5  
 52   Pascale    19658    1  
 39   Pearlie    17621    2  
 364  Price      14177    3  
 161  Precious   10337    4  
 294  Paula      9162     5  
 70   Quincy     18343    1  
 73   Quincy     16631    2  
 192  Quentin    13578    3  
 131  Rodger     19776    1  
 231  Royal      19033    2  
 313  Rocky      19008    3  
 13   Rossie     18403    4  
 45   Rosanna    15992    5  
 418  Sydnee     19810    1  
 470  Sadie      19189    2  
 123  Shanna     18862    3  
 485  Savanah    18664    4  
 302  Steve      16412    5  
 406  Toney      18283    1  
 28   Tremaine   16400    2  
 98   Taurean    15911    3  
 278  Tremaine   14391    4  
 311  Treva      14026    5  
 239  Ubaldo     11630    1  
 78   Valentina  17736    1  
 458  Vita       17527    2  
 170  Vergie     16971    3  
 158  Vance      15089    4  
 272  Veronica   12027    5  
 102  Willis     18155    1  
 329  Ward       14919    2  
 156  Westley    14867    3  
 136  Winnifred  14315    4  
 6    Winnifred  13580    5  
 323  Yolanda    17920    1  
 155  Yesenia    6164     2  
 402  Zachary    19129    1  
 37   Zaria      5398     2  

See running example at DB Fiddle.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading