来自同一表的Oracle SQL MIN和MAX组合

数据分析师

我有以下提到的数据。我希望获得最大的启动消息以及相应的最小或成功消息。

开始消息表
ID1     Timestamp_start_msg_recieved    date        jobid      message time in seconds
1234    5/14/2014 10:02:29              5/14/2014   abc        start 262
1234    5/14/2014 10:02:31              5/14/2014   abc        start 264
1234    5/14/2014 10:02:45              5/14/2014   abc        start 278
1234    5/14/2014 10:02:50              5/14/2014   abc        start 285
1234    5/14/2014 10:09:04              5/14/2014   abc        start 165
1234    5/14/2014 10:09:06              5/14/2014   abc        start 2167
1234    5/14/2014 10:09:16              5/14/2014   abc        start 2180
1234    5/14/2014 10:09:26              5/14/2014   abc        start 2190
1234    5/14/2014 11:45:11              5/14/2014   abc        start 8767
1234    5/14/2014 16:48:20              5/14/2014   abc        start 878
1234    5/14/2014 19:02:52              5/14/2014   abc        start 687
5678    5/14/2014 22:02:52              5/14/2014   pqr        start 501
5678    5/14/2014 23:10:40              5/14/2014   pqr        start 200
成功消息表
ID1     Timestamp_success_msg_recieved  date        jobid  message time in seconds
1234    5/14/2014 10:02:52              5/14/2014   abc    successful 290
1234    5/14/2014 10:09:32              5/14/2014   abc    successful 4280 
1234    5/14/2014 11:45:15              5/14/2014   abc    successful 8774
1234    5/14/2014 11:45:18              5/14/2014   abc    successful 8777
1234    5/14/2014 11:45:19              5/14/2014   abc    successful 8778
1234    5/14/2014 11:45:25              5/14/2014   abc    successful 8784
1234    5/14/2014 16:48:22              5/14/2014   abc    successful 880 
1234    5/14/2014 19:03:00              5/14/2014   abc    successful 699
5678    5/14/2014 22:03:00              5/14/2014   pqr    successful 250
5678    5/19/2014 14:00:16              5/19/2014   pqr    successful 400

预期结果

ID1  IMESTAMP_for_start_message TIMESTAMP_for_success_message    Date       Jobid    msg  msg start_secs success_secs
1234 5/14/2014 10:02:50         5/14/2014 10:02:52           5/14/2014  abc start success 262 290 
1234 5/14/2014 10:09:26         5/14/2014 10:09:32           5/14/2014  abc start success 2190 4280
1234 5/14/2014 11:45:11         5/14/2014 11:45:25           5/14/2014  abc start success 8767 8784
1234 5/14/2014 16:48:20         5/14/2014 16:48:22           5/14/2014  abc start success 878 880
1234 5/14/2014 19:02:52         5/14/2014 19:03:00           5/14/2014  abc start success 687 699
5678 5/14/2014 22:02:52         5/14/2014 22:03:00           5/14/2014  pqr start success 501 699
5678 5/14/2014 23:10:40         null                         5/14/2014  pqr start success 250 null
5678    null                   5/19/2014 14:00:16            5/19/2014  pqr null  success null 400

我正在寻找启动消息和start_secs的最大值,以与成功消息和success_secs的最小值配对。使用带有WITH子句的临时表进行了尝试,还使用了自连接方法。下面是我的查询,但是WITH子句查询返回表中全部数据的MIN。

使用的查询:

WITH DATA AS
  (SELECT MIN(smt.column13) timestamp_for_success_message
  FROM success_table1 smt, start_table2 b
     WHERE
    (SMT.id1 = b.id1)
    AND (SMT.jobid = b.jobid)
    AND (SMT.timestamp_for_success_message_recieved >= b.timestamp_for_start_message_recieved)
  )
SELECT distinct a.timestamp_for_success_message_recieved,
  b.timestamp_for_start_message_recieved,
  b.id1,
  b.jobid
FROM data a,
  start_table2 b
order by b.timestamp_start_message_recieved, a.timestamp_for_success_message_recieved, b.jobid, b.id1;
Abecee

对于示例数据,以下内容也适用

WITH
RawData AS (
  SELECT
    id1
    , jobID
    , message
    , TIMESTAMP_for_start_message timeStamp
    , time_in_seconds
  FROM StartMessageTable
  UNION ALL
  SELECT
    id1
    , jobID
    , message
    , TIMESTAMP_success_msg_received
    , time_in_seconds
  FROM SuccessMessageTable
  ORDER BY id1, jobID, 4
),
Detail AS (
  SELECT
    id1
    , jobID
    , message message1
    , LEAD (message, 1) OVER (ORDER BY id1, jobID, timeStamp) message2
    , timeStamp timeStamp1
    , LEAD (timeStamp, 1) OVER (ORDER BY id1, jobID, timeStamp) timeStamp2
    , time_in_seconds secs1
    , LEAD (time_in_seconds, 1) OVER (ORDER BY id1, jobID, timeStamp) secs2
  FROM RawData
)
SELECT
  id1
  , timeStamp1 TIMESTAMP_for_start_message
  , timeStamp2 TIMESTAMP_for_success_message
  , jobID
  , 'start' msgStart
  , 'success' msgSuccess
  , secs1 start_secs
  , secs2 success_secs
FROM Detail
WHERE (message1 = 'start' AND message2 = 'successful') OR message2 IS NULL
ORDER BY timeStamp1
;

对于“ start_secs”列中的第一个和最后一个值,有相同的警告。
SQL小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自同一表的SQL连接

来自分类Dev

使用Oracle SQL根据列的唯一组合比较同一表中的行

来自分类Dev

来自同一表中2个不同列的Oracle SQL返回主键计数

来自分类Dev

编写SQL查询以查询和更新同一表

来自分类Dev

来自同一表的SQL总和值

来自分类Dev

SQL-比较来自同一表的数据

来自分类Dev

来自同一表和SELECT的MySQL UPDATE

来自分类Dev

在SQL中,是否可以通过解决当前日期和生日之间的差异来自动在同一表中设置列(年龄)的值?

来自分类Dev

在SQL Server中查找具有条件的同一表上的值组合

来自分类Dev

SQL SELECT ID和同一表中的项目数

来自分类Dev

SQL查询同一表中的多个值和多个键

来自分类Dev

SQL根据时间戳和清单级别联接同一表

来自分类Dev

在使用 PHP 和 SQL 填充的网络表单中更新同一表的多行

来自分类Dev

SQL炼金术联接来自同一表的多个列

来自分类Dev

来自同一表的两个sql查询的总和

来自分类Dev

Spark SQL连接来自同一表的两个结果

来自分类Dev

SQL:通过限制来自同一表的其他值的长度来更新列值

来自分类Dev

来自同一表的 2 个 SQL 查询之间的差异

来自分类Dev

SQL在同一表上的关系

来自分类Dev

SQL:遍历同一表

来自分类Dev

同一表中的SQL操作

来自分类Dev

Oracle SQL在同一表的多个表上选择null

来自分类Dev

SQL使用多个查询从同一表中获取多个值(来自同一列)

来自分类Dev

来自同一表的GROUP BY和LEFT JOIN(共COUNT个)

来自分类Dev

来自同一表和多个where条件的多个总和查询

来自分类Dev

SQL查询比较oracle中同一表中的多个列

来自分类Dev

Oracle SQL - 将同一表的多行合并成自己的行

来自分类Dev

如何联接来自同一表的两列并在SQL中格式化新列

来自分类Dev

SQL-从表获取并与同一表连接

Related 相关文章

  1. 1

    来自同一表的SQL连接

  2. 2

    使用Oracle SQL根据列的唯一组合比较同一表中的行

  3. 3

    来自同一表中2个不同列的Oracle SQL返回主键计数

  4. 4

    编写SQL查询以查询和更新同一表

  5. 5

    来自同一表的SQL总和值

  6. 6

    SQL-比较来自同一表的数据

  7. 7

    来自同一表和SELECT的MySQL UPDATE

  8. 8

    在SQL中,是否可以通过解决当前日期和生日之间的差异来自动在同一表中设置列(年龄)的值?

  9. 9

    在SQL Server中查找具有条件的同一表上的值组合

  10. 10

    SQL SELECT ID和同一表中的项目数

  11. 11

    SQL查询同一表中的多个值和多个键

  12. 12

    SQL根据时间戳和清单级别联接同一表

  13. 13

    在使用 PHP 和 SQL 填充的网络表单中更新同一表的多行

  14. 14

    SQL炼金术联接来自同一表的多个列

  15. 15

    来自同一表的两个sql查询的总和

  16. 16

    Spark SQL连接来自同一表的两个结果

  17. 17

    SQL:通过限制来自同一表的其他值的长度来更新列值

  18. 18

    来自同一表的 2 个 SQL 查询之间的差异

  19. 19

    SQL在同一表上的关系

  20. 20

    SQL:遍历同一表

  21. 21

    同一表中的SQL操作

  22. 22

    Oracle SQL在同一表的多个表上选择null

  23. 23

    SQL使用多个查询从同一表中获取多个值(来自同一列)

  24. 24

    来自同一表的GROUP BY和LEFT JOIN(共COUNT个)

  25. 25

    来自同一表和多个where条件的多个总和查询

  26. 26

    SQL查询比较oracle中同一表中的多个列

  27. 27

    Oracle SQL - 将同一表的多行合并成自己的行

  28. 28

    如何联接来自同一表的两列并在SQL中格式化新列

  29. 29

    SQL-从表获取并与同一表连接

热门标签

归档