2015-07-29 3 views
1

У меня есть таблица, подобная этому.Sql запрос, чтобы найти максимум отдельных дней

date   value 
2015-06-27  8088.15 
2015-06-27  8083.25 
2015-06-27  8068.25 
2015-06-24  8246.45 
2015-06-24  8343.55 
2015-06-24  8232.35 
2015-06-24  8564.65 
2015-06-23  8354.75 
2015-06-23  8455.25 
2015-06-23  8451.45 
2015-06-22  8343.55 
2015-06-22  8345.75 
2015-06-21  8023.75 
2015-06-21  8029.85 
2015-06-20  8023.95 

Мне нужно найти индивидуальный максимум (значение) для последних 3 дат. Мне нужен вывод такой.

date   max(value) 
2015-06-27  8088.15 
2015-06-24  8564.65 
2015-06-23  8455.25 

Я попробовал этот запрос

SELECT MAX(value) 
FROM table_name 
WHERE DATE 
IN (SELECT * 
FROM ( 
SELECT DISTINCT DATE 
FROM table_name 
ORDER BY DATE DESC 
LIMIT 3 
) AS t 
) 

Но это на самом деле дает общее максимальное число (значение) для последних 3-х дат. Как я могу это достичь?

ответ

2

Просто используйте:

SELECT date, MAX(value) 
FROM table_name 
GROUP BY date 
ORDER BY DATE desc 
LIMIT 3 

Объяснение: Это будет выбрать grouped date вместе с maximum VALUE которая ORDERED BY date и вернет 3 строки из-за LIMIT 3

+0

Спасибо Nikhil это сработало :) –

+0

Добро пожаловать @ChiyaanSuraj. Примите, если полезно :) –

+1

Вы ответили очень быстро :). Я могу принять ответ только через 8 минут. –

0

Для того, чтобы запрос на работу, нужную максимальную значение должно быть сгруппировано в соответствии с днями, поэтому вы должны добавить в свой запрос GROUP BY пункт , чтобы ограничить только результат максимального значения на основе сгруппированной даты.

SELECT date, MAX(value) FROM table_name 
GROUP BY date 
ORDER BY DATE desc 
LIMIT 3;