按月份分组的计数百分比的SQL查询

按月份分组的计数百分比的SQL查询,sql,oracle,Sql,Oracle,我收到一条消息说表达式是无效标识符。我还收到一条消息,说单个group by无效。请推荐一位候补人选 我有以下Oracle SQL语句: SELECT SUM(CASE WHEN PDRVARIANCE >= -1 then '1' WHEN PDRVARIANCE <-1 then '0' END) / count(*) * 100 as PercentCompliance

我收到一条消息说表达式是无效标识符。我还收到一条消息,说单个group by无效。请推荐一位候补人选

我有以下Oracle SQL语句:

SELECT SUM(CASE
            WHEN PDRVARIANCE >= -1 then '1'
            WHEN PDRVARIANCE <-1 then '0'
          END) 
         / count(*) 
         * 100 as PercentCompliance ,
       TO_CHAR (ACTUALFINISHDATE,'MM/YY') AS DCSMONTH
  FROM    ACTIVITIES
WHERE DCSMONTH IS NOT NULL
GROUP BY DCSMONTH
期望的结果是对每个方差条件和分组按月计算“真”与“假”的百分比,并将其显示为

Percent   Month
    50    10/12
    100   11/12
    0     12/12

不能在定义的相同范围内使用列别名

您必须将
GROUP BY DSCMONTH
替换为
GROUP BY to_CHAR(ACTUALFINISHDATE,'MM/YY')
(并对where子句执行相同的操作),或者将查询包装到另一个查询中

选择dcsmonth,总和(数据)/计数(*)*100%符合性
从(
当PDRVARIANCE>=-1,然后选择1时的情况

当PDRVARIANCE YYYYAAAAAAYYYYYYYY!!!!!所以,我必须承认我不是一个新手,但不是SQL脚本的常客。这是一个无聊的时刻。非常感谢,祝你假期愉快。
Percent   Month
    50    10/12
    100   11/12
    0     12/12
select dcsmonth, sum(data) / count(*) * 100 percentcompliance 
  from (
SELECT CASE WHEN PDRVARIANCE >= -1 then 1
            WHEN PDRVARIANCE <-1 then 0 END data,
       TO_CHAR (ACTUALFINISHDATE,'MM/YY') AS DCSMONTH
  FROM  ACTIVITIES 
WHERE ACTUALFINISHDATE IS NOT NULL
)
GROUP BY DCSMONTH