Group-By
根據第二列的值查找列的最小值
我(在 sqlite 上)有一個具有以下結構的表:
如何將此表轉換為具有以下結構的新表:
我找不到找到第一年的最小天(建構第三列)和最大年份的最大天(建構最後一列)的查詢。
在 SQLite 3.25+ 中,您可以為此使用視窗函式以及條件聚合
SELECT t.tile_id, COUNT(*) count, MIN(CASE WHEN t.rn = 1 THEN t.id END) min_date_id, MIN(CASE WHEN t.nextId IS NULL THEN t.id END) max_date_id FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY tile_id ORDER BY creation_year, creation_day) AS rn, LEAD(id) OVER (PARTITION BY tile_id ORDER BY creation_year, creation_day) AS nextId FROM YourTable t ) t GROUP BY t.tile_id;
您也可以
LEAD
用降序的行號替換,但這需要額外的排序