2017-11-14 11 views
-2

오라클 12C를 사용하고하여, 아래의 열입니다 :그룹은 별개의 쿼리

CENTER_ID  UNIT  EMPLOYEEID LESSON MINS_STUDIED SECTION 
I234   4   G.1  5   EX 
I234   4   G.1  5   LN 
I234   4   G.1  5   VO 

I234   4   G.2  5   EX 
I234   4   G.2  5   LN 
I234   4   G.2  5   VO 

I2345   5   G023   5.2  12   EX 
I2345   5   G023   5.2  12   LN 
I2345   5   G023   5.2  12   VO 

기록 1에서 6까지, 그것은이 경우 유닛 (4)을 공부 2 별개의 employee_id입니다 포함, 나는 동안 총 분이 필요 단위당 (center_id 현명한).

하지만 EMPLOYEE_ID를 기반으로 MINS_STUDIED 만 추가하고 싶습니다.

그래서 부 4 center_id I234 지출 된 총 분 (5 + 5) = 10이고, (5) 대 center_id I2345위한

12. I는 다음 질의

SELECT 
     COUNT(DISTINCT EMPLOYEE_ID),CENTER_ID,UNIT, 
     SUM(DISTINCT MINS_STUDIED) 
    FROM 
     TEST_DATA 
    GROUP BY 
      CENTER_ID,DBD.UNIT; 

사용되고

: 쿼리

center_id UNIT DISTINCT(EMPLOYEE_ID) TOTAL_MINS_STUDIED 
I234   4  2      5 
I2345   5  1      12 

를 반환하지만 위에, 나는 출력 아래와 같이 필요

center_id UNIT DISTINCT(EMPLOYEE_ID) TOTAL_MINS_STUDIED 
I234   4  2      10 
I2345   5  1      12 
+1

[GROUP \ _BY WITH DISTINCT QUERY] 가능한 복제본 (https://stackoverflow.com/questions/47266337/group-by-with-distinct-query) –

답변

0

데이터는

SELECT 
     CENTER_ID 
    , UNIT 
    , COUNT(DISTINCT EMPLOYEE_ID) 
    , SUM(MINS_STUDIED) 
FROM (
    select distinct CENTER_ID, UNIT, EMPLOYEEID , MINS_STUDIED 
    from TEST_DATA 
    ) t 
GROUP BY 
     CENTER_ID,UNIT; 
0

당신이 할 수있는 (열 "제"에 의한) 무시해야하는 반복을 가지고 나타납니다으로 분석 부속 선택하지 않고 기능 및 그룹 :


편집은 SUM 함수의 항으로 partititon에 EMPLOYEE_ID 추가

SELECT 
    CENTER_ID, UNIT, 
    COUNT(EMPLOYEE_ID) OVER (PARTITION BY CENTER_ID, UNIT) EMPLOYEES, 
    SUM(MIN_STUDIED) OVER (PARTITION BY CENTER_ID, UNIT, EMPLOYEE_ID) TOTAL_MINS_STUDIED 
FROM 
    TESTS_DATA 
ORDER BY 
    CENTER_ID, UNIT;