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