2014-10-23 4 views
0

상사는 매년 4 분기의 데이터를보고 싶습니다. 모든 연도가 선택됩니다. 당신이 필요로하는ORACLE에서이 SQL 코드로 작업하는 방법에 대한 조언

SELECT Extract(YEAR from orderdate) as year, 
    Extract(MONTH from orderdate) as month, 
    COUNT(*) as numorders, COUNT(DISTINCT customerid) as numcust, 
    SUM(totalprice) as totspend, 
    SUM(totalprice)*1.0/COUNT(*) as avgordersize, 
    SUM(totalprice)*1.0/COUNT(DISTINCT customerid) as avgcustorder 

FROM dw.orders o 
GROUP BY Extract(YEAR from orderdate), 
    Extract(MONTH from orderdate) 
ORDER BY 1, 2; 
+0

WHERE 절을 추가하십시오. 또한 숙제를 덜 분명하게하려고하십시오. –

+0

숙제 일 때는 너무 잘못 생각한 것 같습니다. – JNevill

+0

@JNevill 이것은 숙제가 아니다. 이것들이 더 잘되기 위해 노력하고있는 책에서 이것들은 문제가된다. – user2267830

답변

1

: 다음 쿼리를 수행하지만 여기에 매년의 마지막 3 개월 동안 데이터를 선택 코드가 지금까지 가지고 있지만 매년의 마지막 3 달 선택하는 힘든 시간을 보내고있어입니다 반환되는 행 수를 줄이려면 WHERE 절이 필요합니다. 또한 날짜를 해당 분기를 나타내는 값으로 변환하거나 날짜에서 4/4 분기를 파생시킬 필요가 있습니다. 나는 전자를 권하고 싶습니다 :

where to_char(orderdate,'Q') = '4' 
0

@ 옆 알렌의 대답은 또한 당신의 기존의 것들과 유사한 구문/논리를 유지하기 위해 WHERE Extract(MONTH from orderdate) IN (10,11,12) 같은 것을 사용할 수 있습니다.

관련 문제