Агрегировать по datetime в sql с группировкой по - PullRequest
4 голосов
/ 02 декабря 2011

Доступны следующие агрегатные функции для SQL

AVG() - Returns the average value
COUNT() - Returns the number of rows
FIRST() - Returns the first value
LAST() - Returns the last value
MAX() - Returns the largest value
MIN() - Returns the smallest value
SUM() - Returns the sum

Мне нужно применить статистическую функцию к полю даты и времени? Там нет в списке. Макс (), Мин () не будет работать. Что мне нужно, это либо

  • вернуть самую последнюю дату
  • вернуть самую раннюю дату

Возможно ли это. Можно ли это как-то реализовать?

Ответы [ 3 ]

8 голосов
/ 02 декабря 2011

min () и max () отлично работают с датами

, вы также можете сделать

последний

select top 1 *
from Table
order by SomeDate desc

самый ранний

select top 1 *
from Table
order by SomeDate 

Кстати, SQL Server не имеет функций first () и last ()

2 голосов
/ 02 декабря 2011

Конечно, MIN и MAX работает ..

Select 
    Min (MyDate) MinDate, 
    MAX (Mydate) MaxDate, 
    COUNT (Mydate) NumDates
FROM
(
    Select GETDATE() + 5 MyDate
    UNION Select GETDATE()+4
    UNION Select GETDATE()+3
    UNION Select GETDATE()+2
    UNION Select GETDATE()+1
    UNION Select GETDATE()-0
    UNION Select GETDATE()-1
    UNION Select GETDATE()-2
    UNION Select GETDATE()-3
    UNION Select GETDATE()-4
    UNION Select GETDATE()-5
) DateList

вернется

MinDate                 MaxDate                 NumDates
----------------------- ----------------------- -----------
2011-11-27 13:14:47.013 2011-12-07 13:14:47.013 11

(1 row(s) affected)

Однако не все агрегаты работают. SUM, AVG не работают, и вы получите сообщение:

Msg 8117, Level 16, State 1, Line 4
Operand data type datetime is invalid for avg operator.
0 голосов
/ 24 июня 2016

Да, мы можем, если дата присутствует в виде столбца таблицы, как у нас есть одна таблица tbldate, которая содержит столбец с именем Datecolmn.затем используйте SQL-запрос, чтобы получить максимальное значение этого столбца, например

Select Max(Datecolmn ) from tbldate 

, и он даст вам max date, который присутствует в этой таблице .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...