2012-04-02 3 views
0

я следующие данные установитьКак использовать групповую By и Имея вместе

id name units release_date 
1 salil 1 2012-04-02 
2 salil 2 2012-03-21 
3 salil 3 2012-04-02 
4 salil 4 2012-03-02 
5 salil 5 2012-04-02 
6 xyz  1 2012-04-01 
7 xyz  2 2012-03-30 
8 xyz  3 2012-03-30 
9 xyz  4 2012-04-01 

Я хочу, чтобы сумма блока для максимального срока для каждого имени. что-то вроде follwing

name units  Max(release_date) 
salil 9   2012-04-02 
xyz 5   2012-04-01 

Я стараюсь следующее, но он не работает

SELECT name, MAX(release_date) as date, sum(units) as units FROM reports 

GROUP BY name; 
+0

Здесь 'дата' является ключевым словом в SQL, так что не будет использовать его как имя поля. Измените его и повторите попытку – Ben

+0

'artist_name' не находится в вашем определенном наборе данных. – RedFilter

+0

@ ben, @ RedFilter: - Его просто опечатка ..... я его отредактировал, хотя – Salil

ответ

0

Попробуйте ниже:

SELECT name, sum(units) as units 
    FROM reports as r 
    LEFT JOIN (select max(date) as maxdate from reports group by name) as mr 
    ON r.date=mr.maxdate 
    WHERE artist_name='Pacer1' GROUP BY name; 
+0

Нет, это дает мне только одну запись, которую я хочу для всех имен. – Salil

+0

Я сомневаюсь в полной информации о artist_name = 'Pacer1', почему вы использовал это в своем запросе в своем посте? возможно, из-за этого он дает одно имя. Удалите его, если нет необходимости –

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