2017-01-30 2 views
-1

여러 매장의 판매 수치를 추출하여 요약으로 표시하는 성명서 작성에 어려움을 겪고 있습니다. 나는 필요한 모든 정보를 얻기 위해 여기에 4 개의 테이블을 묻습니다. 특정 유형의 제품 판매를 철회하기 전까지는 문제가 없습니다.제품 유형별로 판매량을 합산하여 mySQL에 저장하십시오.

Heres는 내 문 :

SELECT s.name, ROUND(sum(od.price*od.quantity),2) as total, SUM(od.quantity) as items, ROUND(sum(od.price*od.quantity),2)/SUM(od.quantity) as aiv, COUNT(o.serial) as orders, ROUND(sum(od.price*od.quantity),2)/COUNT(o.serial) as aov, SUM(CASE WHEN p.type = 'B' THEN ROUND(sum(od.price*od.quantity),2) ELSE 0 END) as bikesales FROM stores as s 
JOIN orders as o ON s.name = o.store 
JOIN order_detail as od ON o.serial = od.orderid 
JOIN products as p ON od.productid = p.id 
WHERE s.live!=0 AND o.date BETWEEN '2015-01-01' AND '2017-12-31' AND (o.status=1 OR o.status=2 OR o.status=3 OR o.status=4) AND od.status=1 
GROUP BY s.name 
ORDER BY s.name 

그러나 나는이 가게 이름의 그룹에 필요한 것, 그것이 내가 Invalid use of group function입니다 얻을 오류로 제대로 작동이되지 못하는 그룹화 생각합니다.

제품 유형별로 선택하는 섹션은 다음과 같습니다. SUM(CASE WHEN p.type = 'B' THEN ROUND(sum(od.price*od.quantity),2) END) as bikesales - 자전거 판매 총계를 얻고이를 bikesales으로 표시하려고합니다.

이것이 가능합니까?

+0

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

답변

0

그것은 둥지 합계 함수에 불법이 시도 :

SUM(CASE WHEN p.type = 'B' THEN ROUND(od.price*od.quantity,2) ELSE 0 END) as bikesales /*Without other ROUND(sum(od.price*od.quantity),2) */ 
관련 문제