1

MSSQLに次のクエリがあります。

select 
TRANSACTION_TYPE_ID
,COUNT(TRANSACTION_TYPE_ID)AS NUMBER_OF_TRANSACTIONS
,CAST(SUM(AMOUNT)AS DECIMAL (30,2)) AS TOTAL
FROM 
    [ONLINE_TRANSACTION] 
WHERE CONVERT(CHAR(8), CREATED_ON, 114) >='17:30' AND AMOUNT IS NOT NULL AND     
TRANSACTION_TYPE_ID !='CHEQUE-STOP-TRANS-TYPE' 
GROUP BY TRANSACTION_TYPE_ID
ORDER BY TRANSACTION_TYPE_ID

上記のようにトランザクションのタイプを表示したいのですがTRANSATION_TYPE_ID、上記のように各タイプのトランザクションの合計金額を表示したいのですが、これらのトランザクションが発生した平均時間も、CREATED_ONこれdatetimeを行うための良い方法をまだ見つけていませんか?

4

4 に答える 4

3

ランドルフポッターの回答に基づいて、次のような平均時間を見つけることができます。

avg(DATEPART(hh,created_on)*60 + DATEPART(mi,created_on)) % 24 as AvgHour,
avg(DATEPART(hh,created_on)*60 + DATEPART(mi,created_on)) / 24 as AvgMinute
于 2009-06-17T09:07:12.903 に答える
1
SELECT FROM_UNIXTIME( ( ROUND((UNIX_TIMESTAMP( floor(timestamp_column)) /   60 ),0) *   60 ) ) rounded_time
FROM mysql_table
WHERE timestamp_column BETWEEN STR_TO_DATE('31/07/2012','%d/%m/%Y') 
AND STR_TO_DATE('01/08/2012','%d/%m/%Y')
于 2012-08-02T10:38:58.283 に答える
1

時刻について話していて、特定の日付を取得しようとしない場合、つまり。2012年1月4日5:32の代わりに5:32、以下が役立つ可能性があります。キャップについて申し訳ありませんが、それは私がSQLを書くのに慣れている方法です。

CONVERT(VARCHAR,AVG(DATEPART(HH,CREATED_ON)*60 + DATEPART(MI,CREATED_ON)) / 60) + ':' + 
CASE WHEN CONVERT(VARCHAR,AVG(DATEPART(HH,CREATED_ON)*60 + DATEPART(MI,CREATED_ON)) % 60) < 10
    THEN '0'+CONVERT(VARCHAR,AVG(DATEPART(HH,CREATED_ON)*60 + DATEPART(MI,CREATED_ON)) % 60)
    ELSE CONVERT(VARCHAR,AVG(DATEPART(HH,CREATED_ON)*60 + DATEPART(MI,CREATED_ON)) % 60)
END AS AVG_CREATED_ON
于 2011-12-02T00:53:44.687 に答える
1

1 つの方法は、時間を秒に変換し、平均を計算してから、結果を時間、分、秒に戻すことです。

于 2009-06-17T08:33:46.153 に答える