Sql 计数内部连接

Sql 计数内部连接,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个connectby语句,它返回每个项目及其子项目 现在,我想知道到目前为止SELECT语句中返回的行数。我尝试的是: SELECT PROJECT_NAME, PROJECT_LEVEL, count(PROJECT_ID) from PROJECTS where PROJECT_NAME is not null connect by prior PROJECTS.id = PROJECTS.parent_id start

我有一个
connectby
语句,它返回每个项目及其子项目

现在,我想知道到目前为止SELECT语句中返回的行数。我尝试的是:

SELECT 
      PROJECT_NAME,
      PROJECT_LEVEL,
      count(PROJECT_ID) 
from PROJECTS
where PROJECT_NAME is not null 
      connect by prior PROJECTS.id = PROJECTS.parent_id
      start with PROJECTS.id = 8572435
我得到的是“不是一个单一的群体功能”

添加分组依据:

SELECT 
      PROJECT_NAME,
      PROJECT_LEVEL,
      count(PROJECT_ID) 
from PROJECTS
where PROJECT_NAME is not null 
      connect by prior PROJECTS.id = PROJECTS.parent_id
      start with PROJECTS.id = 8572435
GROUP BY PROJECT_NAME, PROJECT_LEVEL
每行返回1


我做错了吗?

错误中提到了解决方案。请尝试在sql语句末尾使用group by子句,这将明确地解决您的问题:)如果选择多个列,则无法对一列使用AGGRAGE函数。对于不与aggregate函数一起使用的其他列,必须使用Group By子句:)


正如您提到的,您希望返回行数,那么为什么不使用sum函数而不是count?count(*)OVER()将在每个结果行中为我提供89。那么您得到答案了吗?
SELECT 
      PROJECT_NAME,
      PROJECT_LEVEL,
      count(PROJECT_ID) 
from PROJECTS
where PROJECT_NAME is not null 
      connect by prior PROJECTS.id = PROJECTS.parent_id
      start with PROJECTS.id = 8572435
      Group By PROJECT_NAME, PROJECT_LEVEL