none
SQL AVG() 函數如何傳回指定格式? RRS feed

  • 問題

  • 各位大大,

    新年好! 我用SQL AVG() 捉取某個欄位的平均值, 系統只傳回整數!

    要怎樣才能顯示帶有小數位的數字呢?

    2011年2月10日 上午 08:40

解答

  • Hunterpo0323大大,

    感謝你的解答, 如果只要顯示2位小數, 怎麼作?


    hi

     select部分修改如下並嘗試看看

    SELECT CONVERT(decimal(10,2),AVG(CONVERT(decimal,c1)))
    FROM @t --會自行處理四捨五入

    or

    SELECT [小數點後2位] = LEFT(AVG(CONVERT(decimal,c1)), CHARINDEX('.', AVG(CONVERT(decimal,c1))) + 2)

    FROM @t

     



    • 已標示為解答 Jinchang2003 2011年2月11日 上午 07:39
    2011年2月11日 上午 07:26
    版主
  • 這樣比較合理:

    DECLARE @t TABLE(c1 INT)
    
    INSERT INTO @t
    SELECT 7 UNION ALL
    SELECT 10 UNION ALL
    SELECT 6
    
    SELECT AVG(CONVERT(decimal,c1))
    FROM @t
    

    Hunterpo's IT Vision - http://www.dotblogs.com.tw/hunterpo/
    2011年2月10日 上午 11:42

所有回覆

  • 各位大大,

    新年好! 我用SQL AVG() 捉取某個欄位的平均值, 系統只傳回整數!

    要怎樣才能顯示帶有小數位的數字呢?

    create table t
    (
    	c1 int
    )
    insert into t values(5)
    insert into t values(10)
    insert into t values(6)
    
    select CONVERT(decimal(5,1),AVG(c1))
    from t
    drop table t
    


    http://www.dotblogs.com.tw/terrychuang/
    2011年2月10日 上午 09:01
    版主
  • 這樣比較合理:

    DECLARE @t TABLE(c1 INT)
    
    INSERT INTO @t
    SELECT 7 UNION ALL
    SELECT 10 UNION ALL
    SELECT 6
    
    SELECT AVG(CONVERT(decimal,c1))
    FROM @t
    

    Hunterpo's IT Vision - http://www.dotblogs.com.tw/hunterpo/
    2011年2月10日 上午 11:42
  • 這樣比較合理:

    DECLARE @t TABLE(c1 INT)
    
    INSERT INTO @t
    SELECT 7 UNION ALL
    SELECT 10 UNION ALL
    SELECT 6
    
    SELECT AVG(CONVERT(decimal,c1))
    FROM @t
    

    Hunterpo's IT Vision - http://www.dotblogs.com.tw/hunterpo/

    to hunterpo0323:

       不好意思,剛要投票給你的文章為有用的文章,不知道怎麼搞的,怎麼會變成-1,sorry。


    http://www.dotblogs.com.tw/terrychuang/
    2011年2月10日 下午 12:17
    版主
  • Hunterpo0323大大,

    感謝你的解答, 如果只要顯示2位小數, 怎麼作?

    2011年2月11日 上午 06:50
  • Hunterpo0323大大,

    感謝你的解答, 如果只要顯示2位小數, 怎麼作?


    hi

     select部分修改如下並嘗試看看

    SELECT CONVERT(decimal(10,2),AVG(CONVERT(decimal,c1)))
    FROM @t --會自行處理四捨五入

    or

    SELECT [小數點後2位] = LEFT(AVG(CONVERT(decimal,c1)), CHARINDEX('.', AVG(CONVERT(decimal,c1))) + 2)

    FROM @t

     



    • 已標示為解答 Jinchang2003 2011年2月11日 上午 07:39
    2011年2月11日 上午 07:26
    版主