【问题标题】:selecting record with max usage date or most recent date stamp选择具有最大使用日期或最近日期戳的记录
【发布时间】:2018-04-20 07:35:58
【问题描述】:

我正在尝试按日期提取最近的记录,例如下面的表格示例,但针对表格中的所有手机号码:

USAGE_DATE  MOBILE_NO   IMEI
06-SEP-16   7464924435  3534500646600000
01-SEP-16   7464924435  0000000000000000
10-OCT-16   7464924435  3534500646600000

不幸的是,作为一个新手,我无法使用选择子查询正确更新下面的 SQL,以根据阅读网站上现有的答案/示例来实现这一点 - 任何人都可以帮忙!?

select max(usage_date_time) AS USAGE_DATE, mobile_no, imei
from gsm_usage
--where mobile_no = '07464924435'
group by usage_date_time, mobile_no, imei

【问题讨论】:

  • 嗨,我使用的是 Oracle sql developer 4.0 版 :)

标签: sql oracle greatest-n-per-group


【解决方案1】:

如果你需要 max(usage_date) 您不需要在分组中插入此列

  select max(usage_date_time) AS USAGE_DATE, mobile_no, imei
  from gsm_usage
  where mobile_no = '07464924435'
  group by mobile_no, imei

你必须按聚合函数中不涉及的列分组

如果你不想按imei分组,那么删除表单选择并按

  select max(usage_date_time) AS USAGE_DATE, mobile_no
  from gsm_usage
  where mobile_no = '07464924435'
  group by mobile_no

【讨论】:

  • 非常感谢您的回复。您的建议现在已恢复到 3 条以下记录 - 抱歉,我未能在原始示例数据中强调可能存在不同的 IMEI,我只需要记录最近日期:USAGE_DATE MOBILE_NO IMEI 30-OCT-17 7464924435 3553960746560000 07-NOV-17 7464924435 000000000000000 06-DEC-16 7464924435 3534500646600
  • 答案已更新。 .希望就是你要找的东西
【解决方案2】:

你通常会使用窗口函数:

select gsm.*
from (select gsm.*, row_number() over (partition by mobile_no order by usage_date_time desc) as seqnum
      from from gsm_usage gsm
     ) gsm
where seqnum = 1;

这不是一个聚合问题,而只是一个识别最新记录的问题。

【讨论】:

  • 非常感谢您的回复 Gordon :) 不幸的是我收到了错误:
  • 另外我没有在原始样本数据中说清楚 - 移动设备可能有不同的 IMEI_no 请查看我对其他答案的回复,这可能会更好地解释并显示 3 条记录仍在出现返回而不是最近的日期,再次感谢您的帮助。
【解决方案3】:

试试

select max(usage_date_time) AS USAGE_DATE, mobile_no, imei
from gsm_usage
--where mobile_no = '07464924435'
group by mobile_no, imei

您不必在聚合函数中按某些内容进行分组。

【讨论】:

  • 非常感谢您的回复。您的建议现在已恢复到 3 条以下记录 - 抱歉,我未能在原始示例数据中强调可能存在不同的 IMEI,我只需要记录最近的日期:USAGE_DATE MOBILE_NO IMEI 30-OCT-17 7464924435 3553960746560000 07-NOV-17 7464924435 000000000000000 06-DEC-16 7464924435 35304500646600span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
相关资源
最近更新 更多