각 분기에 대해 고객의 상위 5 % 고객의 성 및 고객 번호를 나열하기 위해 주어진 데이터베이스 (Codehare를 사용하기에 꽤 큼)를 사용해야합니다. 고객의 상위 5 %를 찾으려면 NTILE Function (100/5 = 20, NTILE 20)을 사용하기로 결정했습니다. 열은 두 개의 개별 테이블에서 가져 오므로 내부 조인을 사용했습니다. 내 인생에서 내가 어디로 잘못 가고 있는지 알 수 없다. "누락 된 표현"오류가 계속 발생하지만 정확히 무엇이 누락되었는지 모릅니다. https://codeshare.io/5XKKBj ERD : https://drive.google.com/file/d/0Bzum6VJXi9lUX1d2ZkhudTE3QXc/view?usp=sharing 여기NTILE 함수 및 Oracle 내 내부 조인 사용
지금까지 내 SQL 쿼리입니다 여기에 데이터베이스
데이터베이스입니다.
SELECT
Ntile(20) over
(partition by Employee.Branch_no
order by sum(ORDERS.SUBTOTAL) desc
) As Top_5,
CUSTOMER.CUSTOMER_NO,
CUSTOMER.LNAME
FROM
CUSTOMER
INNER JOIN ORDERS
ON
CUSTOMER.CUSTOMER_NO = ORDERS.CUSTOMER_NO
GROUP BY
ORDERS.SUBTOTAL,
CUSTOMER.CUSTOMER_NO,
CUSTOMER.LNAME;
1)'Employee' 테이블이 없습니다. (2)'GROUP BY'는 모든 SELECT 문에 집계가 아닌 표현식을 포함해야합니다 (즉,'ORDERS.SUBTOTAL'을 집계하여 GROUP BY에 포함 할 수 없습니다). (3)'NTILE'을 적용하기 전에 서브 쿼리를 사용하여 소스 데이터를 대조하는 것을 고려하십시오. –
Employee.Branch_no를 사용하지 않을 경우 실제로 테이블이있는 것으로 간주됩니까? 내가 생각할 수있는 유일한 방법은 다른 내부 결합을 사용하는 것이지만 낭비처럼 보입니다. 서브 쿼리를 설명해 주시겠습니까? –
조인되지 않은 테이블을 참조 할 수 없습니다. 그게 바로 조인입니다. –