簡體   English   中英

分區函數Count()以上

[英]Partition Function Count() over

我正在嘗試編寫以下代碼,以便獲得諸如WO_Count的運行總計:我必須保持WO_Count> 1之類的條件。請問有人可以幫助我嗎? 如果我將WO_Count保持在> 1的位置,則會出現以下錯誤:

ORA-00904:“ WO_COUNT”:無效的標識符00904。00000-“%s:無效的標識符”

select 
   Test1.id_number as Case_ID,
   count(*) over ( partition by Tes2.NAME ) as WO_Count
FROM Test1
INNER JOIN Test2 ON Test1.Test12Test2=Test2.ID  

您需要使用派生表或公共表表達式來嵌套查詢:

select *
from 
 (
    select 
       Test1.id_number as Case_ID,
       count(*) over ( partition by Tes2.NAME ) as WO_Count
    FROM Test1
    INNER JOIN Test2 ON Test1.Test12Test2=Test2.ID  
 ) dt
WHERE WO_Count > 1

順便說一句,您的人數不返回連續的總數 ,而是團體人數

要獲得運行計數,可以使用ROW_NUMBER()分析函數:

SELECT t1.id_number as Case_ID,
       ROW_NUMBER() OVER (
         PARTITION BY t2.NAME
         ORDER BY     ROWNUM  /* or a column name */
       ) as WO_Count
FROM   Test1 t1
       INNER JOIN Test2 t2
       ON ( t1.Test12Test2 = t2.ID )

(注意:您還可以使用COUNT(*) OVER ( PARTITION BY ... ORDER BY ... )來獲取運行計數,但是當您使用*計數行時,它們是等效的。)

如果要在第一行之后包含所有行,則:

SELECT *
FROM   (
  SELECT t1.id_number as Case_ID,
         ROW_NUMBER() OVER (
           PARTITION BY t2.NAME
           ORDER BY     ROWNUM  /* or a column name */
         ) as WO_Count
  FROM   Test1 t1
         INNER JOIN Test2 t2
         ON ( t1.Test12Test2 = t2.ID )
)
WHERE  WO_Count > 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM