sql >> Database teknologi >  >> RDS >> Mysql

Tæl forekomst af felt, mens du er gruppe med 2

Din forespørgsel vedrører ikke dine prøvedata; men du ser ud til at ønske aggregering og rangering. I MySQL 8.0 ville du gøre:

select
    row_number() over(order by count(*) desc) rn,
    order_id,
    count(*) items_in_order
from data
group by order_id
order by rn

Jeg navngav den første kolonne rn (til rang ):Jeg finder id forvirrende her, da du allerede har en kolonne med det navn i tabellen.

I tidligere versioner bruger en mulighed en sessionsvariabel i stedet for row_number() :

select @rn := @rn + 1 rn, order_id, items_in_order
from (
    select order_id, count(*) items_in_order
    from data
    group by order_id
    order by items_in_order desc
) t
cross join (select @rn := 0) r
order by items_in_order desc



  1. Hvordan ved man, om en sql-sætning er udført i java?

  2. WordPress site migration - ikoner mangler

  3. Kan ikke beslutte om normalisering eller denormalisering ville virke

  4. Hvordan konverteres Lat Long til adresse i php med json api?