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

求数据的平均值,精确到小数点后两位[重复]

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

    我想把样本数据的平均值取到小数点后两位

    DECLARE @TBL TABLE (Nos INT, Months VARCHAR(20), Duration INT)
    INSERT INTO @TBL VALUES
    (1,'Jan',33),(1,'Jan',107),(1,'Jan',36),(1,'Jan',139),(1,'Jan',140),(1,'Jan',5),(1,'Jan',130),
    (1,'Jan',176),(1,'Jan',30),(2,'Feb',39),(2,'Feb',62),(2,'Feb',76),(2,'Feb',115),(2,'Feb',101),
    (2,'Feb',12),(2,'Feb',139),(2,'Feb',174),(3,'Mar',5),(3,'Mar',59),(3,'Mar',72),(3,'Mar',100),(3,'Mar',153);
    

    SELECT
    Nos,    
    Months, 
    AVG(Duration) AS [Average of Duration]
    FROM @TBL
    GROUP BY Nos,Months
    ORDER BY Nos
    

    Nos Months  Average of Duration
    1    Jan      88
    2    Feb      89
    3    Mar      77
    

    No  Month   Average of Duration
    1    Jan      88.44
    2    Feb      89.75
    3    Mar      77.80
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Ilyes    6 年前

    简单

    DECLARE @TBL TABLE (Nos INT, Months VARCHAR(20), Duration INT)
    INSERT INTO @TBL VALUES
    (1,'Jan',33),(1,'Jan',107),(1,'Jan',36),(1,'Jan',139),(1,'Jan',140),(1,'Jan',5),(1,'Jan',130),
    (1,'Jan',176),(1,'Jan',30),(2,'Feb',39),(2,'Feb',62),(2,'Feb',76),(2,'Feb',115),(2,'Feb',101),
    (2,'Feb',12),(2,'Feb',139),(2,'Feb',174),(3,'Mar',5),(3,'Mar',59),(3,'Mar',72),(3,'Mar',100),(3,'Mar',153);
    
    SELECT
    Nos,    
    Months, 
    CAST(AVG(1.0 * Duration) AS DECIMAL(4, 2)) AS [Average of Duration]
    FROM @TBL
    GROUP BY Nos,Months
    ORDER BY Nos;
    

    +-----+--------+---------------------+
    | Nos | Months | Average of Duration |
    +-----+--------+---------------------+
    |   1 | Jan    |               88.44 |
    |   2 | Feb    |               89.75 |
    |   3 | Mar    |               77.80 |
    +-----+--------+---------------------+
    
        2
  •  2
  •   Yogesh Sharma    6 年前

    可以使用 avg :

    SELECT Nos, Months, AVG(1.0 * Duration) AS [Average of Duration]
    FROM @TBL
    GROUP BY Nos, Months
    ORDER BY Nos;