SQL按日期时间的日期分组,并选择第一个和最后一个值
我使用CONVERT函数按DateTime列的日期部分进行分组,选择该日期的最大和最小价格值。我想根据完整的日期时间值包括该组的第一个和最后一个价格值 当前查询如下所示:SQL按日期时间的日期分组,并选择第一个和最后一个值,sql,sql-server,Sql,Sql Server,我使用CONVERT函数按DateTime列的日期部分进行分组,选择该日期的最大和最小价格值。我想根据完整的日期时间值包括该组的第一个和最后一个价格值 当前查询如下所示: SELECT CONVERT(date, dateColumn) [dateColumn], MAX(price) [maxColumn], MIN(price) [minColumn] FROM table GROUP BY CONVERT(date, dateColumn) 是否可以在不使用子查询的情况下使用最小/最大
SELECT CONVERT(date, dateColumn) [dateColumn], MAX(price) [maxColumn], MIN(price) [minColumn]
FROM table
GROUP BY CONVERT(date, dateColumn)
是否可以在不使用子查询的情况下使用最小/最大的完整日期时间将第一个和最后一个价格包含在此组中?可以不使用子查询,但以牺牲性能为代价:
SELECT DISTINCT CONVERT(date, dateColumn) as dateColumn,
MAX(price) OVER (PARTITION BY CONVERT(date, dateColumn)) as max_price,
MIN(price) OVER (PARTITION BY CONVERT(date, dateColumn)) as min_price,
FIRST_VALUE(price) OVER (PARTITION BY CONVERT(date, dateColumn) ORDER BY dateColumn ASC) as first_price,
FIRST_VALUE(price) OVER (PARTITION BY CONVERT(date, dateColumn) ORDER BY dateColumn DESC) as last_price
FROM table;
为什么说“不使用子查询”?这似乎很武断。你会如何使用子查询呢?@quartusk。这将是一个不同的问题。这个问题明确指出您不需要子查询。