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

Find de højeste n værdier for hver gruppe i MySQL

Se mit andet svar for MySQL-kun, men meget hurtig, løsning.

Denne løsning giver dig mulighed for at angive et hvilket som helst antal øverste rækker pr. bane og bruger ingen MySQL "funky" syntaks - den burde køre på de fleste databaser.

select lane, series
from lane_series ls
group by lane, series
having (
    select count(*) 
    from lane_series
    where lane = ls.lane
    and series > ls.series) < 2 -- Here's where you specify the number of top rows
order by lane, series desc;

Test output:

create table lane_series (lane int, series int);

insert into lane_series values 
(1, 680),
(1, 685),
(1, 688),
(2, 666),
(2, 425),
(2, 775);

select lane, series
from lane_series ls
group by lane, series
having (select count(*) from lane_series where lane = ls.lane and series > ls.series) < 2
order by lane, series desc;

+------+--------+
| lane | series |
+------+--------+
|    1 |    688 |
|    1 |    685 |
|    2 |    775 |
|    2 |    666 |
+------+--------+
4 rows in set (0.00 sec)


  1. hvordan gemmer jeg java datotype til mysql datotype?

  2. Sådan fungerer REGEXP_LIKE()-funktionen i MySQL

  3. Hvordan tilføjer man 1 time til currrent_timestamp i mysql, som er standardværdien?

  4. CONCAT søjler med Laravel 5 veltalende