質問があります。皆さんが私を助けてくれることを願っています。
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」がいくつあるかを知りたいです。
前もって感謝します!!
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
このコードはmySQLで機能するはずです
SELECT type, COUNT(*)
FROM table
GROUP BY type;
または
SELECT type, authorization, COUNT(*)
FROM table
GROUP BY type, authorization;
COUNT
をCASE
ステートメントと組み合わせて使用できます
_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
_を返す必要があります。
select count(*) as count from tbl_name where type='Raid'
type = raidの総数
こんなこと言ってるの?
ねえこれは役立つかもしれません:-
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;