[英]SQL - need a query for the last_date for each user, max_date, min_date
The original table looks like:原始表格如下所示:
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'
the expected output:预期的 output:
id. min_date. max_date name
---------------------------------
11 12-2017 01-2021 'aaa'
12 02-2011 12-2020 'mmm'
I need to have, min, max dates and the name that corresponds to the max_date.我需要有,最小,最大日期和对应于 max_date 的名称。 I know a way to get min, max dates and separately how to get the date corresponding to the max_date (using ROW_NUMBER() OVER(PARTITION BY...)), but cannot figure out how to combine both together.我知道一种获取最小、最大日期的方法以及如何分别获取与 max_date 相对应的日期(使用 ROW_NUMBER() OVER(PARTITION BY...)),但无法弄清楚如何将两者结合在一起。
One option is to use ROW_NUMBER
along with pivoting logic to select the name corresponding the max date per each id
:一种选择是使用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;
Note that your current date
column appears to be text.请注意,您当前的date
列似乎是文本。 Don't store your dates as text, instead use a proper date column.不要将日期存储为文本,而是使用适当的日期列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.