2012-12-13 24 views
0

我想如何在此原始SQL調用中組合並查找中位時間?

  1. 收集兩種不同type的對象(Published和同型號EventsInReviewing
  2. 找到PublishedCreated之間的介質時,
  3. 組的日期。

這樣我就可以返回一個包含日期的數組,並且任何類型的中間時間差s InReviewingPublished從每天共享target_id。我認爲SQL會返回秒?

例子:

[[Mon, 03 Dec 2012, 110000], [Thu, 13 Dec 2012, 2200000]] 

我原始的SQL語法缺乏一些結論。這是我到目前爲止有:

SELECT target_id, DATE(created_at), COUNT(*) 
    FROM ( SELECT target_id, DATE(created_at) 
      FROM events 
      WHERE created_at > '#{@start_time}' 
      AND events.type = 'InReviewing' 
      UNION ALL 
      SELECT target_id, DATE(created_at) 
      FROM events 
      WHERE created_at > '#{@start_time}' 
      AND events.type = 'Published' 
    ) tmp 
    GROUP BY DATE(created_at) 

不介意#{@start_time}`,這就是使用原生代碼在這裏實現一個時間,它工作正常..

謝謝!

+0

差異= unix_timestamp(theone) - unix_timestamp(theother) – Wrikken

+0

我很尷尬地不夠熟悉,不能實現該建議..儘管如此,謝謝。 – Trip

回答

1

我不認爲我明白你的問題,但我還是決定給它一個鏡頭(也,因爲我沒有在這個時候訪問MySQL,這個例子是MS SQL):

SELECT x.target_id, x.created_at AS InReviewingCreated, y.created_at AS PublishedCreated, DATEDIFF(SECOND, x.created_at, y.created_at) AS DiffSeconds 
FROM 
    (SELECT * 
     FROM Events a 
     WHERE a.created_at > '#{@start_time}' 
      AND a.type = 'InReviewing') x INNER JOIN 

    (SELECT * 
     FROM Events a 
     WHERE a.created_at > '#{@start_time}' 
      AND a.type = 'Published') y ON x.target_id = y.target_id 
ORDER BY x.created_at 

這會爲您提供每個目標是InReview和已發佈時間以及它們之間秒數的時間戳。我有點困惑你想要的... 這裏是我的「想」你想:

SELECT DATEPART(DAYOFYEAR, x.created_at), AVG(DATEDIFF(SECOND, x.created_at, y.created_at)) 
FROM 
    (SELECT * 
     FROM Events a 
     WHERE a.created_at > '#{@start_time}' 
      AND a.type = 'InReviewing') x INNER JOIN 

    (SELECT * 
     FROM Events a 
     WHERE a.created_at > '#{@start_time}' 
      AND a.type = 'Published') y ON x.target_id = y.target_id 
GROUP BY DATEPART(DAYOFYEAR, x.created_at) 
ORDER BY DATEPART(DAYOFYEAR, x.created_at) 

免責聲明:既然我沒有你的表模式,我的測試是不完全有效。如果您要共享示例設置和所需輸出,那麼我可以提供更好的查詢。

希望這會有所幫助。

+0

不知道SQL或MS SQL如此好,這有點棘手。但我看到你實例化'x'和'y'。這些暗示在MS SQL中?還是我錯過某些其他地方的變量的實例化? – Trip

+0

你的兩個代碼塊有什麼區別? – Trip

+0

很高興我完全根據你的反應找出它!謝謝Nabheet! – Trip

相關問題