Group-By

根據第二列的值查找列的最小值

  • October 6, 2021

我(在 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;

db<>小提琴

您也可以LEAD用降序的行號替換,但這需要額外的排序

引用自:https://dba.stackexchange.com/questions/300744