Sql 是否按最长日期的计数分组显示结果?
我有下面的样本数据,我需要显示结果,按最大日期分组计数Sql 是否按最长日期的计数分组显示结果?,sql,oracle,Sql,Oracle,我有下面的样本数据,我需要显示结果,按最大日期分组计数 REQUEST_NUMBER ASSIGNED_GROUP LAST_MODIFIED_DATE 001 GROUP A 001 GROUP B 2/2/2018 002 GROUP A 002 GROUP B 2/2/2018 002 GROUP C
REQUEST_NUMBER ASSIGNED_GROUP LAST_MODIFIED_DATE
001 GROUP A
001 GROUP B 2/2/2018
002 GROUP A
002 GROUP B 2/2/2018
002 GROUP C 2/3/2018
003 GROUP B
我的预期结果需要显示为组的计数,最大值为上次修改日期,如下所示:
ASSIGNED_GROUP TOTAL_COUNT
GROUP B 2
GROUP C 1
在我上面的例子中,001最后分配给B组,002最后分配给C组,003是仅有1条记录,最后修改日期为空,因此保留在B组
到目前为止,我只尝试了一个结果,但没有得到正确的结果:
SELECT request_number, ASSIGNED_GROUP_NAME
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY request_number ORDER BY request_number) RNUM,
request_number, ASSIGNED_GROUP_NAME
FROM WORK_DETAIL
WHERE request_number = '3458112'
)
WHERE MAX(last_modified_date)
ORDER BY ASSIGNED_GROUP_NAME
你可以使用分组方式
像这样的东西可能有用
SELECT ASSIGNED_GROUP, COUNT(ASSIGNED_GROUP), MAX(LAST_MODIFIED_DATE) FROM YourTable
GROUP BY ASSIGNED_GROUP
您可以将ajoin与子查询一起使用,该子查询具有指定的最大日期组
select a.ASSIGNED_GROUP, count(*)
from my_table a
inner join(
select ASSIGNED_GROUP, max(LAST_MODIFIED_DATE) as max_date
from my_table
where LAST_MODIFIED_DATE is not null
group by ASSIGNED_GROUP
) t on t.max_date = a.LAST_MODIFIED_DATE and t.ASSIGNED_GROUP = a.ASSIGNED_GROUP
group by a.assigned_group
好吧,你们试过什么了?这不考虑maxlast修改日期前的记录
select a.ASSIGNED_GROUP, count(*)
from my_table a
inner join(
select ASSIGNED_GROUP, max(LAST_MODIFIED_DATE) as max_date
from my_table
where LAST_MODIFIED_DATE is not null
group by ASSIGNED_GROUP
) t on t.max_date = a.LAST_MODIFIED_DATE and t.ASSIGNED_GROUP = a.ASSIGNED_GROUP
group by a.assigned_group