簡體   English   中英

SQL Cast日期時間並將其用於groupby

[英]SQL Casting datetime and using it for groupby

試圖找到我組織中每個ID的時差。 這是我當前的查詢:

SELECT Label, SUM(Diff)
FROM (
        select distinct mr.deviceid, TO_CHAR(mr.readdate, 'MM/dd/yyyy HH:00 am') as Label, (MAX(ComputedReading) - MIN(ComputedReading)) AS Diff
        from analytic.twmeterreading as mr
         WHERE mr.ReadDate >= DATEADD(hour, -100, GetDate()) AND mr.ReadDate <= GetDate() and mr.orgunitid = 1
         group by mr.deviceid, Label
         order by label
     ) as ReadData
GROUP BY deviceid, Label
ORDER BY Label

數據類型為:

readdate:日期時間

deviceid:int

readdate的返回格式如下:

2018-08-17 07:01:16
2018-08-17 08:00:18
2018-08-17 14:59:41
2018-08-17 12:34:17
2018-08-17 06:02:06
2018-08-17 01:58:54
2018-08-17 12:02:14
2018-08-17 15:01:22
2018-08-17 11:03:16
2018-08-17 05:59:05
2018-08-17 14:02:29
2018-08-17 07:01:09
2018-08-17 09:58:17
2018-08-17 11:56:42
2018-08-17 02:01:13
2018-08-17 15:03:28
2018-08-17 06:03:45
2018-08-17 17:01:22

當我從查詢中排除:00 am時,我會得到結果。 我不知道為什么將這些作為查詢結果的一部分添加為全0。

示例:對於此類型:TO_CHAR(mr.readdate,'MM / dd / yyyy')作為標簽

結果是這樣的:

    label   sum
08/18/2018  108
08/18/2018  3
08/18/2018  254
08/18/2018  50
08/18/2018  229
08/18/2018  983
08/18/2018  434
08/18/2018  64
08/18/2018  2
08/18/2018  0
08/18/2018  370

當我這樣做時:TO_CHAR(mr.readdate,'MM / dd / yyyy hh:00 AM')作為Label我得到全部的0。

任何想法? 順便說一句,這很重要

我不清楚您想要什么,但這是一個似乎可行的示例:

SELECT deviceid, Label, SUM(Diff)
FROM (
        SELECT 
          mr.deviceid, 
          mr.readdate::date as Label, 
          (MAX(ComputedReading) - MIN(ComputedReading)) as Diff 
        FROM   twmeterreading as mr
        WHERE  mr.ReadDate::date >= current_date  
        AND    mr.ReadDate::date <= current_date 
        AND    mr.orgunitid = 1
        GROUP BY mr.deviceid, Label
     ) as ReadData
GROUP BY deviceid, Label
ORDER BY Label

實時代碼位於: http : //sqlfiddle.com/#! 15/ 8f3c0/2

我使用了postgresql,因為它似乎最接近redshift。 請注意,日期轉換功能有些不同。

請評論距您所需答案有多近,我會進行調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM