2017-03-23 1 views
0

좋아, 지금까지 SQL Sum 답변 요약 내에서 해결 된 내 문제를 보지 못했습니다. 다음은, 내 오류는SQL SUM 오류, mySQL 환경

"# 1064 - 당신은 당신의 SQL 구문에 오류가있다; 근처 'SUM (payments.payment)를 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 등을 Jan_cohor 'as 2 행 "

내 코드가 이름이 바뀐 테이블을 기반으로 수정 된 참조로 사용하는 것처럼 보입니다. 제발 조언. 감사!

SELECT customer.customer_id as cust_id 
     SUM(payments.payment) as cust_pmts 
     (SUM(payments.payment)/6) as Jan_cohort_clv 
FROM telemon_payments_data payments 
LEFT JOIN telemon_customer_data customer 
ON payments.customer_id = customer.customer_id 
GROUP BY 1 
HAVING customer.account_created_on between "2016-01-01" and "2016-01-31" 
+3

당신은 HAVING 및 WHERE 다시 검토해야 할 것 선택 –

답변

0

CUSTOMER_ID에 의해 그룹에 원하는 또한 내가 믿는 선택

SELECT customer.customer_id as cust_id, 
     SUM(payments.payment) as cust_pmts, 
     (SUM(payments.payment)/6) as Jan_cohort_clv 
FROM telemon_payments_data payments 
LEFT JOIN telemon_customer_data customer 
ON payments.customer_id = customer.customer_id 
where customer.account_created_on between "2016-01-01" and "2016-01-31" 
GROUP BY customer.customer_id 

에서 필드를 구분하는 쉼표를 추가하고, 어디

0

누락 쉼표에 있어야합니다 절을 갖는하고, havingwhere이어야하고 group byselect의 서수가 아니라 열 이름을 사용해야합니다.

특정 기간에만 customer.account_created_on 만 입력하려는 경우 inner join 대신 left join을 사용해야하는 이유는 무엇입니까? 또는 payments이 없더라도 모든 고객을 원했습니까? 그들이 payments이없는 경우에도 지정된 날짜 범위에서

SELECT 
    customer.customer_id as cust_id 
    , SUM(payments.payment) as cust_pmts 
    , (SUM(payments.payment)/6) as Jan_cohort_clv 
FROM telemon_payments_data payments 
    inner JOIN telemon_customer_data customer 
    ON payments.customer_id = customer.customer_id 
where customer.account_created_on between "2016-01-01" and "2016-01-31" 
GROUP BY customer.customer_id 

모든 고객 :

SELECT 
    customer.customer_id as cust_id 
    , SUM(payments.payment) as cust_pmts 
    , (SUM(payments.payment)/6) as Jan_cohort_clv 
FROM telemon_customer_data customer 
    left JOIN telemon_payments_data payments 
    ON payments.customer_id = customer.customer_id 
where customer.account_created_on between "2016-01-01" and "2016-01-31" 
GROUP BY customer.customer_id 
+0

에서 각 필드 다음에 쉼표를 놓치고있어 설명. – herbacidal

+0

비록 고객이 지불을하지 않았더라도 모든 고객을 알고 싶습니다. 감사. 마치 INNER와 LEFT JOIN을 재검토해야하는 것 같습니다. – herbacidal

+0

@herbacidal 여기 조인에 대한 그림이 마음에 들어요 : https://www.techonthenet.com/sql/joins.php – SqlZim