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

KELOMPOK BERDASARKAN PEMESANAN

Jadi dari komentar dan penambahan SqlFiddle sepertinya Anda ingin membuat nomor baris yang dipartisi dengan prioritas pada AS per platform dan kemudian pilih catatan pertama. Salah satu cara melakukan Partitioned Row Numbers di mysql adalah dengan menggunakan variabel berikut contohnya:

SELECT
  territory_id
  ,platform_type_id
  ,store_url
FROM
( SELECT
    *
    ,@PlatFormRowNum:= IF(@prevplatform = platform_type_id, @PlatFormRowNum + 1, 1) as PlatformRowNum
    ,@prevplatform:= platform_type_id
  FROM
    main_itemmaster m
    CROSS JOIN (SELECT @prevplatform:='',@PlatFormRowNum=0) var
  ORDER BY
    platform_type_id
    ,CASE WHEN territory_id = 'US' THEN 0 ELSE 1 END
    ,territory_id
) t
WHERE
  t.PlatformRowNum = 1
ORDER BY
  t.platform_type_id

SQL Fiddle:http://sqlfiddle.com/#!9/81c3b6/12

Pada dasarnya ini mempartisi nomor baris berdasarkan platform, memesan AS sebelum wilayah lain mana pun dan kemudian memilih baris pertama untuk setiap platform. Satu-satunya pertanyaan/trik adalah bagaimana Anda memilih mana yang akan dikembalikan ketika AS tidak tersedia untuk platform hanya dengan urutan abjad dari teritori_id?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan data dari kolom tabel dan simpan ke kolom tabel lain

  2. Apakah praktis untuk menormalkan tabel secara dinamis?

  3. Tidak dapat menggunakan database eksternal di aplikasi Android

  4. Cara memilih data dari dua tabel menggunakan satu kueri

  5. mencari cara yang lebih Pythonic untuk mengakses database