1

Вопрос по sql – СРЕДНЕГО ВРЕМЕНИ SQL

У меня есть следующий запрос в 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 Я до сих пор не нашел хороший способ сделать это?

  • Error: User Rate Limit Exceeded

    от Andreas
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от Andreas
  • 1

    Code:

    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')
    

  • 1

    Одним из способов будет преобразование времени в секунды

    вычисление среднего значения, а затем преобразование его обратно в часы, минуты и секунды для результата.

  • 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
    

  • 1

    Если вы говорите о времени суток и не рассчитываете получить конкретну

    ю дату, т.е. 5:32 вместо 4 января 2012 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