SQL AVERAGE TIME

前端 未结 4 2040
粉色の甜心
粉色の甜心 2021-01-27 00:45

I have the following query in MSSQL:

select 
TRANSACTION_TYPE_ID
,COUNT(TRANSACTION_TYPE_ID)AS NUMBER_OF_TRANSACTIONS
,CAST(SUM(AMOUNT)AS DECIMAL (30,2)) AS TOTA         


        
相关标签:
4条回答
  • 2021-01-27 01:28

    Based on Randolph Potter's answer, you can find the average time like:

    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
    
    0 讨论(0)
  • 2021-01-27 01:28

    If your talking about the time of day and not looking to get a specific date, ie. 5:32 instead of Jan 4, 2012 5:32, the below could help. Sorry about the caps, it's the way I'm used to writing 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
    
    0 讨论(0)
  • 2021-01-27 01:31

    One way would be to convert the time to seconds, calculate the average, and then convert it back to hours, minutes and seconds for the result.

    0 讨论(0)
  • 2021-01-27 01:41
    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')
    
    0 讨论(0)
提交回复
热议问题