MW211 EXIT

devlog
SQL/連続するデータにグループ番号
2014年12月01日
同じ属性が連続するものをグルーピングしたい場合のSQL。
  ○→1
  ○→1
  ×→2
  ×→2
  ○→3
┌──────────────────────────────────────┐
│SELECT 表.並び順,                                                           │
│       表.属性,                                                             │
│       COUNT(*) AS グループ番号                                             │
│    FROM 表                                                                 │
│        LEFT JOIN (                                                         │
│            SELECT 基準表.*                                                 │
│                FROM 表 AS 基準表                                           │
│                    LEFT JOIN 表 AS 直前表                                  │
│                      ON  直前表.並び順 = (SELECT MAX(並び順)               │
│                                               FROM 表                      │
│                                               WHERE 並び順 < 基準表.並び順)│
│                      AND 直前表.属性 <> 基準表.属性                        │
│                WHERE 基準表.並び順 = (SELECT MIN(並び順) FROM 表)          │
│                   OR 直前表.並び順 IS NOT NULL                             │
│        ) AS 境界                                                           │
│          ON 境界.並び順 <= 表.並び順                                       │
│    GROUP BY 表.並び順,                                                     │
│             表.属性                                                        │
│    ORDER BY 表.並び順 ASC;                                                 │
└──────────────────────────────────────┘
分類:SQL