2013-02-15 1 views
1

Я устал использовать части моего предыдущего вопроса, которые были похожи, но я, как таблица, которую я запрашиваю, имеет несколько строк. Кажется, я не могу получить одно максимальное значение за день. Я тогда необходимо объединить это с предыдущим вопросом, но это еще одна вещь, которую мне нужно играть с ...найти одно значение MAX в день

таблица проста, 2 колонки

Date  |  Peak Power 

1/1/2012 10:00:00 | 150.00 

1/1/2012 10:12:00 | 120.00 

1/1/2012 05:01:00 | 190.00 

1/1/2012 01:35:00 | 500.00 

1/1/2012 04:54:00 | 250.00 

Результат

Date | Peak Power each day 

1/1/2012 10:00:00 | 500.00 

2/1/2012 04:00:00 | 150.00 

Любая помощь будет большой.

ответ

3

Вы не говорите нам, что продукт SQL вы используете, так что здесь Sql Server 2008R2:

SELECT 
CAST(t.DateColumn as DATE), MAX(t.PowerUsage) as 'Peak Power Each Day' 
FROM [MyTable] t 
GROUP BY CAST(t.DateColumn AS DATE) 

здесь MySql

SELECT 
DATE(t.DateColumn), MAX(t.PowerUsage) as 'Peak Power Each Day' 
FROM [MyTable] t 
GROUP BY DATE(t.DateColumn) 
+0

Блестящее спасибо, нет. Я увижу, получаю ли 2 запроса для разных таблиц для работы в 1 запросе. –

0

Итак, вы хотите консолидировать записи даты в датах? Есть несколько способов сделать это, но я хотел бы использовать это:

SELECT CONVERT(CHAR(10), Date, 120) AS "Date", MAX("Peak Power") 
FROM MyTable 
GROUP BY CONVERT(CHAR(10), Date, 120) 

Вы не указали свой RDMS, но это будет работать в MS SQL.

+0

Есть почти наверняка лучше альтернативы литье в 'CHAR' (как показывает ответ Киро). Фактически, значение форматирования, которое вы использовали, по-прежнему является меткой времени, поэтому, возможно, все равно придется делать полное форматирование (все ~ 26 символов), а затем сокращать его. Это вряд ли позволит использовать любой индекс в столбце даты. Это возможно (но я не очень хорошо знаю SQL Server), что с помощью 'CAST (... как DATE)' будут созданы встроенные ярлыки, позволяющие использовать соответствующие индексы. –

Смежные вопросы