Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menemukan nilai n tertinggi dari setiap grup di MySQL

Lihat jawaban saya yang lain untuk solusi khusus MySQL, tetapi sangat cepat.

Solusi ini memungkinkan Anda menentukan jumlah baris teratas per lajur dan tidak menggunakan sintaks "funky" MySQL - ini harus berjalan di sebagian besar basis data.

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;

Hasil pengujian:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus dengan Gabung di MySQL

  2. Kelompokkan kueri mysql dengan interval 15 menit

  3. Proyek Java selesai, sekarang membuat file jar atau .exe (dengan Database)

  4. Tipe Data untuk Menyimpan Bujur/Lintang di Mysql

  5. #1222 - Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda