2014-07-11 2 views
0

가장 좋은 단어 질문이 아닙니다. 30 일이 지난 항목을 선택하는 쿼리를 작성하려고합니다. 나는 지금까지 이것을 가지고있다SQL, 30 일보다 오래된 항목을 선택하고, 지난 30 일 이내에 항목이있는 30 일보다 오래된 항목을 필터링하십시오.

SELECT farm_list.customer_id, data_stored.`timestamp` 
FROM farm_db.data_stored data_stored 
     INNER JOIN farm_db.farm_list farm_list 
      ON (data_stored.farm_code = farm_list.farm_code) 
WHERE data_stored.`timestamp` >= CURDATE() - 30 
GROUP BY farm_list.customer_id 

이것은 30 일보다 오래된 모든 항목을 선택하고 고객별로 그룹화하는 데 사용된다.

일부 고객의 경우 지난 30 일 내에 30 일 이상 항목이 있습니다. 나는 그 고객을 제외시키고 싶다. 이 쿼리의 목적은 비활성 고객을 강조 표시하는 것입니다. data_stored 테이블은 서버에서 고객 활동이있을 때마다 갱신됩니다.

내가 분명하지 않다면 물어보십시오. 나는 분명히하려고 노력할 것입니다. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

1

고객이 말하는 가장 최근의 타임 스탬프는 30 일 이상입니다. 이제 구현해 보겠습니다.

SELECT farm_list.customer_id, max(data_stored.`timestamp`) as maxts 
FROM hathor_hb.data_stored data_stored INNER JOIN 
    farm_db.farm_list farm_list 
    ON (data_stored.farm_code = farm_list.farm_code) 
GROUP BY farm_list.customer_id 
HAVING maxts <= CURDATE() - 30; 
+0

감사합니다. 이 쿼리가 비어있는 결과를 주었기 때문에 약간 수정해야했습니다. 타임 스탬프에 DATE() 함수를 사용해야했습니다. – user3032605

관련 문제