2016-11-14 3 views
-1

У меня есть таблица с несколькими платежами, у которых есть дата и staff_id. Я хочу получить сумму платежей за каждый staff_id за каждый год.mysql select sum anually для нескольких пользователей

Например:

2011 - Staff1 - 66$ 
2011 - Staff2 - 24$ 
2012 - Staff1 - 86$ 
2012 - Staff2 - 0$ 

Моя идея была что-то вроде:

SELECT 
    staff_id, 
    YEAR(p.payment_date), 
    sum(p.amount) 
FROM 
    payment p 
WHERE 
    staff_id = (SELECT p.staff_id FROM payment p GROUP BY p.staff_id) 
GROUP BY 
    YEAR(p.payment_date); 

Это, очевидно, не работает, потому что (SELECT p.staff_id FROM payment p GROUP BY p.staff_id) будет возвращать более одного значения.

Как я могу это сделать правильно?

+1

См http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an -mcve-for-what-seem-to-me-to-be-a-very-simple-sql-query – Strawberry

+0

схема этой таблицы была бы очень полезной здесь – Matthias

+0

ОК, сделает это в будущем! – user7157554

ответ

1

Вам просто нужно сгруппировать вашу сумму на как год и персонала ID:

SELECT 
    YEAR(p.payment_date), 
    staff_id, 
    sum(p.amount) 
FROM 
    payment p 
GROUP BY 
    YEAR(p.payment_date), 
    staff_id 
+0

thx! Мне нужно чаще использовать мой мозг ... – user7157554

+0

добро пожаловать. – McNets

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