代码之家  ›  专栏  ›  技术社区  ›  aggicd

SQL Server 2012:人均行数标准偏差

  •  0
  • aggicd  · 技术社区  · 6 年前

    我有桌子 ITEMS 以下内容:

    Itemid, 
    ItemName, 
    OwnerID
    

    每一行代表一个项目。所有者可以有多个项目。我想计算每个所有者的项目/行的标准偏差。是否可以用 STDEV 内置功能?

    我试过了,但看起来不太好:

    select STDEV(COUNT(*)) from dbo.ITEMS 
    GROUP BY ITEMS.OwnerID
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Cato    6 年前

        SELECT STDEV(IQ.cnt) as SDofCounts from --'from' was missing
            (select ITEMS.OwnerID, COUNT(0) as cnt from dbo.ITEMS 
                GROUP BY ITEMS.OwnerID
            ) IQ
    

            select ITEMS.OwnerID, COUNT(0) as cnt, COUNT(0) * COUNT(0) as EXS   from dbo.ITEMS 
                GROUP BY ITEMS.OwnerID
    

    SELECT STDEV(IQ.cnt) as SDofCounts, 
           SUM(EXS) as SigmaEXsquare, 
           SUM(1.0 * cnt) / COUNT(0) as MU, 
           SUM(EXS) - (SUM(1.0 * cnt) / COUNT(0)) * (SUM(1.0 * cnt) / COUNT(0)) as Variance, 
           SQRT(SUM(EXS) - (SUM(1.0 * cnt) / COUNT(0)) * (SUM(1.0 * cnt) / COUNT(0))) AS SDcalc
            from
            (select ITEMS.OwnerID, COUNT(0) as cnt, COUNT(0) * COUNT(0) as EXS from dbo.ITEMS 
                GROUP BY ITEMS.OwnerID
            ) IQ