0

こんにちはこれが私のSQLコードです:

    SELECT a."Date", a."Missed", b."Total Client Schedules", cast(100-((a."Missed"*100) / b."Total Client Schedules")AS decimal) as "Pct Completed" -
  FROM -
   ( -
     SELECT DATE(scheduled_start) as "Date",count(*) as "Missed" FROM -
     events WHERE node_name IS NOT NULL AND status IN ('Missed') GROUP BY DATE(scheduled_start) -
    ) as a, -
   ( -
    SELECT DATE(scheduled_start) as "Date", count(*) as -
    "Total Client Schedules" FROM events WHERE node_name IS NOT NULL GROUP BY DATE(scheduled_start) -
    ) as b -
  WHERE a."Date" = b."Date" ORDER BY "Date" desc

そしてここに出力があります

       Date           Missed      Total Client Schedules      Pct Completed
-----------     ------------     -----------------------     --------------
 2013-02-20                2                         805                100
 2013-02-19               14                         805                 99
 2013-02-18               29                         805                 97
 2013-02-17               59                         805                 93
 2013-02-16               29                         806                 97
 2013-02-15               49                         805                 94
 2013-02-14               33                         805                 96
 2013-02-13               57                         805                 93
 2013-02-12               21                         805                 98
 2013-02-11               35                         805                 96
 2013-02-10               34                         805                 96

99.99% や 97.2% などにしたい場合は、常に最大の数値に丸められるようです。

4

1 に答える 1

0

使用しているデータベースを指定しません。ただし、一部のデータベースは整数演算を行うため、1/2 は 0.5 ではなく 0 です。

これを修正するには、使用している定数を整数ではなく数値にします。

cast(100.0-((a."Missed"*100.0) / b."Total Client Schedules")AS decimal)

その後、算術のために非整数型に変換されます。

于 2013-02-20T01:55:39.820 に答える