0

単純な集計クエリを作成しようとしていますが、何かに苦労しています。

「完了」または「未完了」のステータス フィールドを持つテーブルがあります。クエリが 3 つの行を返すようにしたい: 完了数、未完了数、計算された完了率。

これまでのところ、最初の2行は

     SELECT Status, Count(*) as countNums FROM tblStuff GROUP BY Status

したがって、これは次のようなものを返します

 Status    Countnums
 __________         
 Complete  100
 Incomplete 100

そして、私が欲しいのは

 Status    Countnums      Percent
 __________         
 Complete  100             50
 Incomplete 100            50

また

 Status    Countnums      
 __________         
 Complete  100            
 Incomplete 100           
 percentComplete     50

ただし、後者が行レベルでどのように機能するかはわかりません。これは MS Access にあります。

4

3 に答える 3

1

SQL サーバーで

SELECT Status, Count(*) AS cnt, CAST( Count(*) as decimal) / (SELECT COUNT(*) FROM tblStuff) AS perc 
FROM tblStuff 
GROUP BY Status

完全なカウントを変数に保存することもできます

DECLARE @fcnt decimal

SELECT @fcnt = COUNT(*) FROM tblStuff
SELECT Status, Count(*) AS cnt,Count(*) / @fcnt AS perc 
    FROM tblStuff 
    GROUP BY Status

アクセス中

SELECT tblStuff.Status, Count(*) AS cnt, (SELECT COUNT(*) FROM tblStuff as t1) AS fcnt, [cnt]/[fcnt] AS perc
FROM [tblStuff]
GROUP BY tblStuff.Status
于 2012-12-08T21:27:19.457 に答える
1

これで仕事はうまくいきます。

SELECT
   Status,
   Count(*) AS CountNums,
   Count(*) / DCount("*", "tblStuff") AS Pct
FROM
   tblStuff
GROUP BY Status

合計数を関係的に取得することもできますが、これは実際にはパフォーマンスに違いはなく、おそらくより明確です。

于 2012-12-08T21:27:28.970 に答える