web-dev-qa-db-ja.com

特定の値を含む合計レコードをカウントします

質問があります。皆さんが私を助けてくれることを願っています。

2つの列を含むテーブルがあります。

type           // contains 2 different values: "Raid" and "Hold"
authorization  // contains 2 different values: "Accepted" or "Denied"

次のような値を返すビューを作成する必要があります。

TYPE:RAID     ACCEPTED:5          DENIED:7

基本的に、TYPEの値のうち「Raid」がいくつあるか、次に「Accepted」と「Denied」がいくつあるかを知りたいです。

前もって感謝します!!

8
user1311030
SELECT
   Type
  ,sum(case Authorization when 'Accepted' then 1 else 0 end) Accepted
  ,sum(case Authorization when 'Denied' then 1 else 0 end) Denied
 from MyTable
 where Type = 'RAID'
 group by Type
15
Philip Kelley

このコードはmySQLで機能するはずです

SELECT type, COUNT(*)
FROM table
GROUP BY type;

または

SELECT type, authorization, COUNT(*)
FROM table
GROUP BY type, authorization;
5
Simon Forsberg

COUNTCASEステートメントと組み合わせて使用​​できます

_SELECT COUNT(CASE authorization WHEN 'denied' THEN 1 ELSE NULL END) as denied,
  COUNT(CASE authorization WHEN 'authorized' THEN 1 ELSE NULL END) as authorized
FROM table
WHERE type = 'RAID'
_

SUM(CASE …)も可能ですが、ELSEの代わりにNULL句で_0_を返す必要があります。

2
knittl
select count(*) as count from tbl_name where type='Raid'

type = raidの総数

こんなこと言ってるの?

2
sujal

ねえこれは役立つかもしれません:-

select type as 'TYPE',sum(Denied) as 'DENIED',sum(Accepted) as 'AUTHORIZED' from
(
 SELECT type,0 as 'Denied',count(*) as 'Accepted' from t where authorization = 'Accepted'    group by type
 union all
 SELECT type,count(*) as 'Denied',0 as 'Accepted' from t where authorization = 'Denied'     group by type ) as sub_tab group by TYPE;
0
Pruthvithej