2011-01-07 3 views
2

У меня возникли проблемы с поиском даты, когда мои клиенты достигли определенного порога в том, сколько денег они делают.Поиск даты с SUM

customer_id | Amount | created_at 
--------------------------- 
1134  | 10 | 01.01.2010  
1134  | 15 | 02.01.2010  
1134  | 5 | 03.24.2010  
1235  | 10 | 01.03.2010  
1235  | 15 | 01.03.2010  
1235  | 30 | 01.03.2010  
1756  | 50 | 01.05.2010  
1756  | 100 | 01.25.2010  

Чтобы определить, сколько общая сумма, которую они сделали бегаю простой запрос, как это:

SELECT customer_id, SUM(amount) 
FROM table GROUP BY customer_id 

Но мне нужно, чтобы быть в состоянии найти, например, дл дата, когда клиент достигает 100 долларов США в общей сумме.

Любая помощь очень ценится. Благодаря!

ответ

0

Нечто подобное, имеющие пункт

ВЫБРАТЬ customer_id, SUM (сумма) в качестве Всего из таблицы GROUP BY Customer_ID, имеющей Total> 100

+0

Хм, я думаю, что только возвращает клиентов, которые имеют более чем $ 100 в общем объеме. Мне нужно найти точную дату, когда они достигли 100 долларов, т. Е. если у клиента сегодня $ 150 в общей сумме, мне нужно найти, что они дали 100 долларов. –

1

Джесси,

Я считаю, что вы ищете вариант " общий итог ".

Взгляните на это сообщение calculate-a-running-total. Существует множество полезных ссылок.

В этой статье есть много кода, который можно было бы повторно использовать: http://www.sqlteam.com/article/calculating-running-totals.

+0

Спасибо, это очень помогло. –

0

Я не уверен, если MySQL поддерживает подзапросы, так возьмите это с зерном соли:

SELECT customer_id 
     , MIN(created_at) AS FirstDate 
FROM (SELECT customer_id 
        , created_at 
        , (SELECT SUM(amount) 
         FROM  [Table] t 
         WHERE  t.CustomerID = [Table].CustomerID 
           AND t.created_at <= [Table].created_at 
        ) AS RunTot 
      FROM  [Table] 
     ) x 
WHERE x.RunTot >= 100 
GROUP BY customer_id 
Смежные вопросы