在每个行组中执行操作

时间:2014-05-29 20:49:09

标签: mysql sql sqlite

我有一张如下表格。

+------------+------------------+-------------------------------+-------------+
| day        | workflow_step_id | UNIX_TIMESTAMP(finished_time) | workflow_id |
+------------+------------------+-------------------------------+-------------+
| 2014-04-30 |                1 |                    1398852780 |           1 |
| 2014-04-30 |               17 |                    1398871213 |           2 |
| 2014-04-30 |                6 |                    1398872807 |           1 |
| 2014-04-30 |               22 |                    1398898676 |           2 |
| 2014-04-30 |               11 |                    1398898234 |           1 |
| 2014-04-30 |               16 |                    1398866813 |           2 |
| 2014-04-30 |                5 |                    1398869940 |           1 |
| 2014-04-30 |               21 |                    1398893419 |           2 |
| 2014-04-30 |               10 |                    1398894136 |           1 |
| 2014-04-30 |               15 |                    1398861385 |           2 |
| 2014-04-30 |                4 |                    1398860271 |           1 |
| 2014-04-30 |               20 |                    1398888252 |           2 |
| 2014-04-30 |                9 |                    1398886916 |           1 |
| 2014-04-30 |               14 |                    1398863922 |           2 |
| 2014-04-30 |                3 |                    1398865682 |           1 |
| 2014-04-30 |               19 |                    1398881994 |           2 |
| 2014-04-30 |                8 |                    1398882497 |           1 |
| 2014-04-30 |               13 |                    1398852785 |           2 |
| 2014-04-30 |                2 |                    1398856674 |           1 |
| 2014-04-30 |               18 |                    1398878836 |           2 |
| 2014-04-30 |                7 |                    1398878949 |           1 |
| 2014-04-30 |               12 |                    1398850920 |           2 |
| 2014-05-01 |               12 |                    1398932040 |           2 |
| 2014-05-01 |                1 |                    1398938880 |           1 |
| 2014-05-01 |               17 |                    1398957830 |           2 |
| 2014-05-01 |                6 |                    1398961385 |           1 |
| 2014-05-01 |               22 |                    1398996388 |           2 |
| 2014-05-01 |               11 |                    1398994543 |           1 |
| 2014-05-01 |               16 |                    1398946714 |           2 |
| 2014-05-01 |                5 |                    1398959182 |           1 |
| 2014-05-01 |               21 |                    1398989773 |           2 |
| 2014-05-01 |               10 |                    1398979568 |           1 |
| 2014-05-01 |               15 |                    1398949939 |           2 |
| 2014-05-01 |                4 |                    1398953732 |           1 |
| 2014-05-01 |               20 |                    1398980246 |           2 |
| 2014-05-01 |                9 |                    1398971281 |           1 |
| 2014-05-01 |               14 |                    1398940775 |           2 |
| 2014-05-01 |                3 |                    1398944207 |           1 |
| 2014-05-01 |               19 |                    1398970295 |           2 |
| 2014-05-01 |                8 |                    1398967778 |           1 |
| 2014-05-01 |               13 |                    1398940935 |           2 |
| 2014-05-01 |                2 |                    1398947433 |           1 |
| 2014-05-01 |               18 |                    1398966959 |           2 |
| 2014-05-01 |                7 |                    1398965931 |           1 |
-------------------------------------------------------------------------------

命令:

SELECT day, 
       stats.workflow_step_id, 
       Max(Unix_timestamp(finished_time)) - Min(Unix_timestamp(finished_time)), 
       workflow_id 
FROM   modeling_dashboard_workflow_stats stats 
       INNER JOIN modeling_dashboard_workflow_step step 
               ON stats.workflow_step_id = step.workflow_step_id 
ORDER  BY day; 

在此示例中,只有两个day和两个workflow_id,但它可以有day个或workflow_id个。

我想计算每天的每个workflow_id的最大时间戳和最小时间戳之间的差异

看起来应该是这样的。

+------------+-------------------------------------------------------------+
| day        |                             MAX(timestamp) - MIN(timestamp) |
+------------+-------------------------------------------------------------+
| 2014-04-30 | difference bw max&min timestamp with workflow_id=1 in 04-30 |
| 2014-04-30 | difference bw max&min timestamp with workflow_id=2 in 04-30 |
| 2014-05-01 | difference bw max&min timestamp with workflow_id=1 in 05-01 |
| 2014-05-01 | difference bw max&min timestamp with workflow_id=2 in 05-01 |
----------------------------------------------------------------------------

我该怎么做? 理想情况下,它会将workflow_id = 1的结果和workflow_id = 2的结果放在不同的列中(日期,MAX = MIN表示id = 1,MAX-MIN表示id = 2),但这只是我的结果下一步。

2 个答案:

答案 0 :(得分:1)

试试这个:

select day
   ,workflow_step_id
   ,MAX(UNIX_TIMESTAMP(finished_time)) - MIN(UNIX_TIMESTAMP(finished_time))
from modeling_dashboard_workflow_stats
group by day
   ,workflow_step_id

答案 1 :(得分:1)

SELECT day, workflow_id
  , MAX(UNIX_TIMESTAMP(finished_time)) - MAX(UNIX_TIMESTAMP(finished_time))
FROM modeling_dashboard_workflow_stats
GROUP BY day, workflow_id