2017-11-14 22 views
-2

は、Oracle 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 wiss)。

ただし、EMPLOYEE_IDに基づいてMINS_STUDIEDという別個のものだけを追加したいとします。

そこで、ユニット4のためcenter_id I234に費やされる合計分(5 + 5)= 10であり、ユニット5のためcenter_id I2345ため

12.私は以下のクエリ

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

データは、あなたが(コラム「SECTION」によって引き起こされる)を無視する必要が繰り返しを持っているように見えます

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; 
関連する問題