[英]SQL - need a query for the last_date for each user, max_date, min_date
原始表格如下所示:
id date name
----------------------
11 01-2021 'aaa'
11 03-2020 'bbb'
11 01-2019 'ccc'
11 12-2017 'ddd'
12 02-2011 'kkk'
12 05-2015 'lll'
12 12-2020 'mmm'
預期的 output:
id. min_date. max_date name
---------------------------------
11 12-2017 01-2021 'aaa'
12 02-2011 12-2020 'mmm'
我需要有,最小,最大日期和對應於 max_date 的名稱。 我知道一種獲取最小、最大日期的方法以及如何分別獲取與 max_date 相對應的日期(使用 ROW_NUMBER() OVER(PARTITION BY...)),但無法弄清楚如何將兩者結合在一起。
一種選擇是使用ROW_NUMBER
以及旋轉邏輯到 select 對應每個id
的最大日期的名稱:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) rn
FROM yourTable
)
SELECT
id,
MIN(date) AS min_date,
MAX(date) AS max_date,
MAX(CASE WHEN rn = 1 THEN name END) AS name
FROM cte
GROUP BY
id;
請注意,您當前的date
列似乎是文本。 不要將日期存儲為文本,而是使用適當的日期列。
下面的查詢應該可以工作
SELECT *
FROM tbl1 t1
INNER JOIN
(SELECT id,
min(date) AS min_date,
max(date) AS max_date
FROM tbl1
GROUP BY id) t2 ON t1.date = t2.max_date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.