sql >> データベース >  >> RDS >> PostgreSQL

均等なサイズのグループを作成する方法

    ntileを使用できます :

    SELECT car_id, "date",
            ntile(CASE WHEN c <= 5 THEN 1
                       WHEN c <= 10 THEN 2
                       ELSE 3
                  END)  OVER (PARTITION BY car_id ORDER BY "date") AS group_id
    FROM (SELECT car_id, "date",COUNT(*) OVER(PARTITION BY car_id) AS c
          FROM Table1) AS s
    

    SqlFiddleDemo

    出力:

    ╔════════╦══════════╦══════════╗
    ║ car_id ║   date   ║ group_id ║
    ╠════════╬══════════╬══════════╣
    ║      1 ║ 20160101 ║        1 ║
    ║      1 ║ 20160103 ║        1 ║
    ║      1 ║ 20160105 ║        1 ║
    ║      1 ║ 20160106 ║        1 ║
    ║      1 ║ 20160107 ║        2 ║
    ║      1 ║ 20160108 ║        2 ║
    ║      1 ║ 20160109 ║        2 ║
    ║      1 ║ 20160110 ║        2 ║
    ║      2 ║ 20160102 ║        1 ║
    ║      2 ║ 20160104 ║        1 ║
    ╚════════╩══════════╩══════════╝
    


    1. Oracle:2つの日付を減算し、結果の分を取得する方法

    2. 異なる月の同じ日付を混合した日時のMySQLグループ化日

    3. mysql致命的なエラー:バッファプールにメモリを割り当てることができません

    4. mysqlのパフォーマンス間のパフォーマンスは何ですか..?