0

私はこのようなテーブルを持っています:

   Server     CompliancePercentage
   A          25
   B          15
   C          45
   D          75
   E          17
   F          82

次の方法で単一のクエリから結果を取得したい:

   Conformity%        00-20   20-40   40-60  60-80   80-100
   Server Count       2       1          1     1      1

ネストされたクエリから上記の結果を取得するにはどうすればよいですか? どんな助けでも素晴らしいでしょう。

よろしくお願いします。スヴィ

4

3 に答える 3

2

CASE 式で集計関数を使用して、結果を取得できます。

select
  'ServerCount' Conformity,
  count(case when CompliancePercentage >= 0 and CompliancePercentage <20 then 1 end) Per00_19,
  count(case when CompliancePercentage >= 20 and CompliancePercentage <40 then 1 end) Per20_39,
  count(case when CompliancePercentage >= 40 and CompliancePercentage <60 then 1 end) Per40_59,
  count(case when CompliancePercentage >= 60 and CompliancePercentage <80 then 1 end) Per60_79,
  count(case when CompliancePercentage >= 80 and CompliancePercentage <100 then 1 end) Per80_100
from yourtable;

デモで SQL Fiddle を参照してください

于 2013-09-06T13:39:34.963 に答える
1

次の表を想定しています。

create table dummyTable
(
    srv char(1),
    comp int
)

次のようなクエリを書き出すことができます

select 
    [00-19] = (SELECT COUNT(1) FROM dummyTable where comp between 0 and 19),
    [20-39] = (SELECT COUNT(1) FROM dummyTable where comp between 20 and 39)

テーブルに大量のレコード (つまり、> 1M) がある場合は、一連のテーブル スキャンを回避するために、コンプライアンス パーセンテージ列のテーブルに非クラスター化インデックスを追加することを検討することをお勧めします。

于 2013-09-06T13:35:53.117 に答える
-1

そのようなものはあなたのために働くはずです:

SELECT
    ( COUNT(id) FROM table WHERE id > 1 ) AS id_gt_1,
    ( COUNT(id) FROM table WHERE id > 100 ) AS id_gt_100

ここで一致した基準は、単純に ID 番号のカウントです。

于 2013-09-06T13:33:47.990 に答える