簡體   English   中英

SQL - 需要查詢每個用戶的 last_date、max_date、min_date

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM