我一直试图制定我的查询,但似乎无法得到它。我试过使用rank()但我可能会遗漏一些东西。
以下是样本数据(有超过1个ID):
ID标题Last_update_date
168产品经理4/2/2016
168产品经理3/28/2016
168 Supervisor 2/27/2016
168 Supervisor 2/15/2016
168 Supervisor 2/2/2016
168 Team Lead 1/14/2016
168 Team Lead 1/12/2016
168 Team Lead 1/10/2016
168 Supervisor 1/5/2016
168 Supervisor 1/2/2016
168开发者12/26/2015
168开发者12/15/2015
我想在查询中得到什么:
168 Prod。经理3/28/2016
168 Supervisor 2/2/2016
168 Team Lead 1/10/2016
168 Supervisor 1/2/2016
168开发者12/15/2015
非常感谢帮助。
谢谢,
RS
答案 0 :(得分:2)
我不认为这里需要分析函数(OldProgrammer的解决方案),当它是“group by”的一个简单的应用程序时。
select id, title, min(last_update_date)
from your_table -- << -- enter your table name here
group by id, title
答案 1 :(得分:0)
你需要一个子查询: (编辑:未经测试)
\_ccTag\=.+?\&
可替换地:
SELECT DISTINCT *
FROM table
WHERE Last_update_date =
(SELECT MIN(Last_update_date)
FROM table t1
WHERE t1.Title = table.Title)
答案 2 :(得分:0)
SELECT *
FROM
(SELECT title,
last_update_date,
row_number() over (partition BY title order by last_update_date ) rn
FROM test_table
)
WHERE rn = 1
答案 3 :(得分:0)
出于测试目的,我创建了一个更大的表格(包含多个ID):
SQL> select * from your_table;
ID TITLE LAST_UPDATE_DATE
---------- ------------------------------ ------------------
168 Prod. Manager 04/02/2016
168 Prod. Manager 03/28/2016
168 Supervisor 02/27/2016
168 Supervisor 02/15/2016
168 Supervisor 02/02/2016
168 Team Lead 01/14/2016
168 Team Lead 01/12/2016
168 Team Lead 01/10/2016
168 Supervisor 01/05/2016
168 Supervisor 01/02/2016
168 Developer 12/26/2015
168 Developer 12/15/2015
230 Supervisor 03/03/2016
230 Supervisor 02/23/2016
230 Team Lead 02/14/2016
230 Team Lead 02/01/2016
230 Supervisor 01/03/2016
17 rows selected.
<强>查询:强>
with a as
(
select id, title, last_update_date,
row_number() over (partition by id order by last_update_date) - row_number()
over (partition by id, title order by last_update_date) gp
from your_table
)
select id, title, min(last_update_date) update_date
from a
group by id, title, gp
order by id, update_date desc
/
<强>结果:强>
ID TITLE UPDATE_DAT
---------- ------------------------------ ----------
168 Prod. Manager 03/28/2016
168 Supervisor 02/02/2016
168 Team Lead 01/10/2016
168 Supervisor 01/02/2016
168 Developer 12/15/2015
230 Supervisor 02/23/2016
230 Team Lead 02/01/2016
230 Supervisor 01/03/2016
8 rows selected.
解释:此查询与前一个查询非常相似。唯一的困难是按连续的“标题”指定分组,而不是按标题分组,而不考虑时间线,每个id。这是通过在两个不同分区上计算为row_number()的差异的附加列“gp”来实现的。这是一种非常常见的基本技术,但初看起来可能并不明显;它有时被称为“tabibitosan方法”,谷歌为它提供更多信息。