2016-11-19 91 views
1

我想從我正在使用的應用程序的表中獲取一些信息(讓我們稱之爲表TICKETS)。有兩列包含我需要的信息,即MODIFIED和CREATED。 CREATED是一張票創建的時間,MODIFIED是同一張票被修改的時間(顯然)。我的問題是,如何獲得一天中每分鐘停留的票數(已創建但尚未修改)?SQL-爲計算而創建臨時表

CREATED   | MODIFIED 
1/1/2016 2:02:42 | 1/1/2016 2:02:48 
1/1/2016 2:04:23 | 1/1/2016 2:06:02 

我的想法是創建一個新的表(讓我們把它稱爲RESULT)將必須對HH的所有值的列TIME:一天的MM,第二列是結果: SUM(( CREATED < = TIME)AND(MODIFIED> TIME))爲TICKET表的所有行。

TIME | RESULT 
HH:MM | SUM((CREATED<=TIME) AND (MODIFIED>TIME)) 
  1. 我的問題是我如何實現這樣的事情?

  2. 有沒有更好的方法?

回答

0

不完全是你想要的,但是因爲這是一個困難的要求,所以我認爲每一點都有幫助。

這個票據可以爲您帶來一天中的票數,當您至少已售出一張票時。

SELECT 
    LPAD(EXTRACT(HOUR FROM created), 2, '0') || ':' 
     || LPAD(EXTRACT(MINUTE FROM created), 2, '0') as timeOfDay, 
    COUNT(*) as ticketBuy 
FROM t 
GROUP BY 
    LPAD(EXTRACT(HOUR FROM created), 2, '0') || ':' 
     || LPAD(EXTRACT(MINUTE FROM created), 2, '0') 
ORDER BY timeOfDay; 

獲取你:

+-----------+-----------+ 
| TIMEOFDAY | TICKETBUY | 
+-----------+-----------+ 
| 03:02  |   1 | 
| 03:04  |   1 | 
| 04:04  |   2 | 
| 09:04  |   2 | 
| 10:04  |   1 | 
+-----------+-----------+ 

來源:

+--------------------+--------------------+ 
| CREATED   |  MODIFIED  | 
+--------------------+--------------------+ 
| 1/1/2016 3:02:42 | 1/1/2016 5:02:48 | 
| 1/1/2016 3:04:23 | 1/1/2016 4:06:02 | 
| 1/1/2016 4:04:23 | 1/1/2016 5:26:02 | 
| 1/1/2016 4:04:23 | 1/1/2016 6:06:02 | 
| 1/1/2016 9:04:23 | 1/1/2016 9:16:02 | 
| 1/1/2016 9:04:53 | 1/1/2016 9:06:02 | 
| 1/1/2016 10:04:23 | 1/1/2016 11:06:02 | 
+--------------------+--------------------+