1

私のテーブルは、

 customdata check service loc value
  101        0    0        4   4
  101        0    0        3   3
  101        5     4       4    3
  102        0     0       1     2
  102        4     4       3     3
  103        0     0       4     4

私の結果は次のようになります、

  customdata cnt splcnt//count of check when not 0
   101        3    1
   102        2    1
   103        1    0

誰かが私にこれを両方のカウントを取るために私のクエリをどのように持っているべきか教えてもらえますか?

4

2 に答える 2

2

CASEステートメントを使用して、次SUMの値に条件付きで基づいてくださいcheck

SELECT
    customdata,
    COUNT(*) AS cnt,
    SUM(CASE WHEN check > 0 THEN 1 ELSE 0 END) AS splcnt
FROM YourTable
GROUP BY customdata
于 2012-10-01T21:28:41.053 に答える
1

テーブル名=tcustomdata、チェック列の名前がchckに変更されました

SELECT a.customdata, a.cnt AS CNT_ALL, c.cnt AS chckcnt
FROM (SELECT customdata, COUNT(*) AS cnt FROM tcustomdata GROUP BY customdata) a
LEFT OUTER JOIN 
(SELECT customdata, COUNT(*) AS cnt FROM tcustomdata WHERE chck != 0 GROUP BY customdata) c
ON a.customdata = c.customdata

SQLフィドルでそれをチェックしてください

于 2012-10-01T21:37:25.463 に答える