I have run this below query
SELECT
SUBSTRING_INDEX(prim_key ,":" , 1) prim_key,
SUBSTRING_INDEX(prim_key ,":" , -1) urid,
CASE WHEN basicname = 'Q914' THEN 'SHC'
WHEN basicname = 'QP913' THEN 'PHC'
WHEN basicname = 'QC1214' THEN 'CHC'
WHEN basicname = 'QD1014' THEN 'DH/SDH'
ELSE 'UNKOWN'
END AS Status
FROM facility_data
WHERE 1 = 1
AND basicname in ( 'Q914' , 'QP913' , 'QC1214' , 'QD1014' )
and prim_key like '3_10_%'
ORDER BY prim_key ASC
I need to modify slightly, I want it to display total no of SHC , DH , PHC and CHC.
So please tell me what should i do to display Total no of shc, dh,phc and chc.
SELECT status
, Count(*)
FROM (
SELECT CASE basicname
WHEN 'Q914' THEN 'SHC'
WHEN 'QP913' THEN 'PHC'
WHEN 'QC1214' THEN 'CHC'
WHEN 'QD1014' THEN 'DH/SDH'
END AS status
FROM facility_data
WHERE basicname in ('Q914', 'QP913', 'QC1214', 'QD1014' )
AND prim_key like '3_10_%'
) As x
GROUP
BY status
If you want it grouped by prim_key
and urid
then
SELECT prim_key
, urid
, status
, Count(*)
FROM (
SELECT SUBSTRING_INDEX(prim_key, ':', +1) As prim_key
, SUBSTRING_INDEX(prim_key, ':', -1) As urid
, CASE basicname
WHEN 'Q914' THEN 'SHC'
WHEN 'QP913' THEN 'PHC'
WHEN 'QC1214' THEN 'CHC'
WHEN 'QD1014' THEN 'DH/SDH'
END AS status
FROM facility_data
WHERE basicname in ('Q914', 'QP913', 'QC1214', 'QD1014' )
AND prim_key like '3_10_%'
) As x
GROUP
BY prim_key
, urid
, status
You can use SUM
with an IF
statement inside if it is sufficient for you to get one row with just the counts (this you uses where
).
SELECT
sum(if(basicname = 'Q914',1,0)) as SHC,
sum(if(basicname = 'QP913',1,0)) as PHC,
sum(if(basicname = 'QC1214',1,0)) as CHC,
sum(if(basicname = 'QD1014',1,0)) as DH
FROM facility_data
WHERE
basicname in ( 'Q914' , 'QP913' , 'QC1214' , 'QD1014' )
and prim_key like '3_10_%'
ORDER BY prim_key ASC
or you use a GROUP BY
if you want to have multiple rows as result (requires Using temporary; Using filesort
):
SELECT
CASE WHEN basicname = 'Q914' THEN 'SHC'
WHEN basicname = 'QP913' THEN 'PHC'
WHEN basicname = 'QC1214' THEN 'CHC'
WHEN basicname = 'QD1014' THEN 'DH/SDH'
ELSE 'UNKOWN'
END AS Status,
COUNT(*) as `count`
FROM facility_data
WHERE
basicname in ( 'Q914' , 'QP913' , 'QC1214' , 'QD1014' )
and prim_key like '3_10_%'
GROUP BY basicname
ORDER BY prim_key ASC
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.