简体   繁体   English

分区函数Count()以上

[英]Partition Function Count() over

I'm trying to write the following in order to get a running total of WO_Count, like so: I have to keep condition like WO_Count > 1. Could any one help me please? 我正在尝试编写以下代码,以便获得诸如WO_Count的运行总计:我必须保持WO_Count> 1之类的条件。请问有人可以帮助我吗? If I keep where WO_Count > 1, I'm getting below error: 如果我将WO_Count保持在> 1的位置,则会出现以下错误:

ORA-00904: "WO_COUNT": invalid identifier 00904. 00000 - "%s: invalid identifier" 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  

You need to nest your query, either using a Derived Table or a Common Table Expression: 您需要使用派生表或公共表表达式来嵌套查询:

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

Btw, your count doesn't return a running total , but a group count . 顺便说一句,您的人数不返回连续的总数 ,而是团体人数

To get a running count you can use the ROW_NUMBER() analytic function: 要获得运行计数,可以使用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 )

(Note: you could also use COUNT(*) OVER ( PARTITION BY ... ORDER BY ... ) to get a running count but when you are counting rows, using * , they are equivalent.) (注意:您还可以使用COUNT(*) OVER ( PARTITION BY ... ORDER BY ... )来获取运行计数,但是当您使用*计数行时,它们是等效的。)

If you want all the rows after the first then: 如果要在第一行之后包含所有行,则:

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