복붙노트

[SQL] SQL의 평균을 반올림 때 어떻게 소수를 검색 할

SQL

SQL의 평균을 반올림 때 어떻게 소수를 검색 할

여기 내 SQL 문이다

SELECT ROUND(AVG(column_name), 100) 
FROM [database].[dbo].[table]

I는 검색 답은 1 내지 수의 가능한 범위 3 - 5 행 (908).

나는 3.0 또는 3.09 말을해야합니다. 이것이 가능한가?

해결법

  1. ==============================

    1.값이 때문에 값을 주조로 평균은 같은 데이터 유형을해야합니다 :

    값이 때문에 값을 주조로 평균은 같은 데이터 유형을해야합니다 :

    SELECT ROUND(AVG(CAST(column_name AS FLOAT)), 2) FROM [database].[dbo].[table]
    
  2. ==============================

    2.이 도움이 될 것입니다 경우 임은 확실하지 당신은 skullomania하지만이 시도

    이 도움이 될 것입니다 경우 임은 확실하지 당신은 skullomania하지만이 시도

        SELECT CAST(AVG(CAST(column_name as DECIMAL(10,2))) AS DECIMAL(10,2))FROM [table_name]
    

    플로트는 반면에 소수가 더 정확한, 당신은 수레의 수학 및 소수에 읽어 할 수의 것, 대략이다. 나는이와 처음에는 고생 여전히 시간에 잃어버린 느낌. 희망이 당신을 도울 것입니다.

    IN C #을 내가) (여기에 대한 답변을 게시 곤경에 얻을 수 있지만, 당신이 이중으로 변환하고, ExecuteScalar는 사용하여 시도 할 수 있습니다하지 않도록 경우

    이 시도:

        protected void Page_Load(object sender, EventArgs e)
        {
         SqlConnection conn= sqlconnectionstring;
         SqlCommand cmd = new SQLCommand("SELECT STATEMENT",conn);
         cmd.CommandType = CommandType.Text;
         conn.Open();
         Double result = Convert.ToDouble(cmd.ExecuteScalar());
         lblresult.text = "the result is " + result;
         conn.Dispose();
         cmd.Dispose();
        }
    
  3. ==============================

    3.나는 전적으로 당신이 묻는 건지 모르겠지만, 난 당신이 번호를 추가 정밀 돌아왔다하고자하고 있다고 생각합니다.

    나는 전적으로 당신이 묻는 건지 모르겠지만, 난 당신이 번호를 추가 정밀 돌아왔다하고자하고 있다고 생각합니다.

    당신은 ROUND 함수의 호출을 포장하고 있지만 당신의 열의 데이터 유형은 어떤 정밀 큰이없는 경우 다음 0 (예를 들어 int)를, 당신은 CAST에 필요하거나 먼저 다른 유형으로 데이터를 변환합니다.

    여기에 다른 유형의 CAST 데이터를 여러 가지 방법을 설명 몇 가지 예입니다 :

    SELECT CAST(100 AS decimal(5, 2)) -- Gives you "100.00"
          ,CAST(100 AS float) --<== Gives you "100"
          ,CAST(100.0 AS float) --<== Gives you "100"
          ,CAST(100.01 AS float) --<== Gives you "100.01"
    

    데이터 형식 (Transact-SQL) : 또한, MSDN을 확인하십시오.

  4. ==============================

    4.당신은 정말, 거기 ROUND을 수행 할 필요가 없습니다. 당신은 다음과 같이 DECIMAL로 값을 변환 할 수 있습니다 :

    당신은 정말, 거기 ROUND을 수행 할 필요가 없습니다. 당신은 다음과 같이 DECIMAL로 값을 변환 할 수 있습니다 :

    SELECT AVG(CONVERT(DECIMAL(16,2),YourColumn)) 
    FROM YourTable
    
  5. ==============================

    5.

    CAST(AVG(column_name) AS DECIMAL(5, 2))
    

    그것은 100.00로 쇼 (100)의 과 100.05로 100.05

  6. from https://stackoverflow.com/questions/13237477/how-do-i-retrieve-decimals-when-rounding-an-average-in-sql by cc-by-sa and MIT license