Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 除以派生秩,从子查询中计算列数以查找百分位_Sql Server 2005_Percentile - Fatal编程技术网

Sql server 2005 除以派生秩,从子查询中计算列数以查找百分位

Sql server 2005 除以派生秩,从子查询中计算列数以查找百分位,sql-server-2005,percentile,Sql Server 2005,Percentile,我在从子查询中划分两列时遇到问题。返回的唯一答案是0。我试着将这两列相乘,看看它是否有效。我想不出是什么问题 SELECT cert, repdte, NAMEFULL, Rnk, Cnt, (Cnt - Rnk) / Cnt as 'Perc' FROM ( SELECT STRU.cert, STRU.repdte, STRU.NAMEFULL, CASE WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL ELSE

我在从子查询中划分两列时遇到问题。返回的唯一答案是0。我试着将这两列相乘,看看它是否有效。我想不出是什么问题

SELECT cert, repdte, NAMEFULL, Rnk, Cnt, (Cnt - Rnk) / Cnt as 'Perc'
FROM
(
    SELECT STRU.cert, STRU.repdte, STRU.NAMEFULL,
    CASE
        WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL
        ELSE (ISNULL(INC.EINTEXPA,0) / ISNULL(BAL.DEPI5,0))*100
    END AS 'CoF', RANK() OVER (Partition by STRU.repdte ORDER BY 
    CASE
        WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL
        ELSE (ISNULL(INC.EINTEXPA,0) / ISNULL(BAL.DEPI5,0))*100
    END DESC) AS 'Rnk', COUNT(*) OVER (PARTITION BY STRU.repdte) as 'Cnt'
    FROM MODEL_RIS_RMS_FDIC.dbo.STRU as STRU
    JOIN MODEL_RIS_FDIC.dbo.CDI_RC_BAL as BAL
        ON STRU.cert = BAL.cert AND STRU.callYMD = BAL.callYMD
    JOIN MODEL_RIS_FDIC.dbo.CDI_RI_INC as INC
    ON STRU.cert = INC.cert and STRU.callYMD = INC.callYMD
    WHERE 
    CASE
        WHEN ISNULL(BAL.DEPI5,0) = 0 THEN NULL
        ELSE (ISNULL(INC.EINTEXPA,0) / ISNULL(BAL.DEPI5,0))*100
    END IS NOT NULL AND STRU.callYMD >= '2008-03-31'
) A
WHERE Perc < .11

我认为Cnt和Rnk的数据类型是INT,因此结果给出了INT type的最小值,即0。尝试铸造Cnt和Rnk使其浮动

(cast(Cnt - Rnk) as FLOAT)/CAST(Cnt as FLOAT)

是的。成功了。非常感谢你的帮助。