sql >> データベース >  >> RDS >> Sqlserver

SQL:集計関数を使用してパーセンテージを取得するクエリに問題がある

    用途:

      SELECT je.statusid,
             COUNT(*) AS num,
             (COUNT(*) / (SELECT COUNT(*)+.0
                           FROM JOURNAL_ENTRY) ) * 100
        FROM JOURNAL_ENTRY je
    GROUP BY je.statusid
    

    次に、必要な精度のフォーマットの問題です:

    CAST(((COUNT(*) / (SELECT COUNT(*)+.0 FROM BCCAMPUS.dbo.COURSES_RFIP)) * 100)
         AS DECIMAL(4,2))
    

    ...小数点以下2桁になります。小数点以下の桁数が必要ない場合は、結果を INT にキャストします。

    CTE を使用して重複を最小限に抑えることができます:

    WITH cte AS (
       SELECT je.*
         FROM JOURNAL_ENTRY je
        WHERE je.user_id = 3)
      SELECT c.statusid,
             COUNT(*) AS num,
             (COUNT(*) / (SELECT COUNT(*)+.0
                           FROM cte) ) * 100
        FROM cte c
    GROUP BY c.statusid
    


    1. MySQLから友達の名前のリストを取得する

    2. 1対多のテーブルでのユーザーのランキングのクエリ

    3. テーブルからすべてのOracleVARRAYの要素の数を数える方法は?

    4. PDOを使用したPHPでの各登録ユーザーのデータの取得と表示