2016-03-28 9 views
0

I次の列があります。私は最後の日(3月13日)に初日(1月1日)を含む(月まで)日付の範囲のための一日あたりの平均毎日の放電を持つことができますどのようにタイムスタンプの範囲内のレコードの平均を返すクエリ

-READING_DATE    timestamp - in '01-JAN-16 12.00.00.000000000 AM' format  


-DISCHARGE_M3PERSEC   number 

また、毎時平均と月平均を求める必要があります。

ありがとうございました。

---更新:次の問合せでは、ORA-01855 AMまたはPMのエラーが発生します。

SELECT TRUNC(READING_DATE) AS READING_DATE, 
    AVG(DISCHARGE_M3PERSEC) AS DISCHARGE 
    FROM HYDROMETRIC_GUELPH 
    WHERE READING_DATE 
    BETWEEN TO_TIMESTAMP('01-JAN-16 12.00.00.000000000 AM','DD-MON-YY HH.MI.SSxFF AM') 
    AND TO_TIMESTAMP('13-MAR-16 05.30.00.00.000000000 PM','DD-MON-YY HH.MI.SSxFF PM') 
GROUP BY TRUNC(READING_DATE); 
+0

何を試しましたか? –

+0

上記の更新を参照してください – chris

+0

これは魅力的でしょうか? http://stackoverflow.com/questions/9664231/ora-01855-am-am-or-pm-pm-required –

答えて

0

クエリが正常に実行され、TO_TIMESTAMPに愚かな誤植があります。時間05、分30、次に00のグループTWICE(秒ですか?)があります。TO_TIMESTAMPから2番目のグループとその期間(00.)を削除するだけです。さらに助けが必要な場合は、再度お書きください。

+0

残念ながら、データがその形式であるため、同じエラーが発生します – chris

+0

わかりません。それは05.30.00.000000でなければなりません。代わりに、あなたはEXTRA 00を持っています。そうです:05.30.00.00.000000。 3つのピリオドで区切られた4つのグループではなく、4つのピリオドで区切られた5つの桁のグループがあります。 – mathguy

+0

あなたは正しいです。ありがとう!!!常にこれらのタイプミス.. – chris

0

タイムスタンプにはフォーマットがありません。 ANSIタイムスタンプリテラルを使用すると、書式設定や言語/ロケールの問題を回避できます。

SELECT TRUNC(READING_DATE) AS READING_DATE, 
     AVG(DISCHARGE_M3PERSEC) AS DISCHARGE 
FROM HYDROMETRIC_GUELPH 
WHERE READING_DATE BETWEEN TIMESTAMP '2016-01-01 00:00:00.000' 
         AND  TIMESTAMP '2016-03-13 17:30:00.000' 
GROUP BY TRUNC(READING_DATE); 
関連する問題