MySQL Query Results – How to Merge Multiple Results into One

countgroup byMySQL

1.

SELECT COUNT( * ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name

2.

SELECT SUM( inscan ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name

3.

SELECT SUM( is_deliver ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name

4.

SELECT SUM( is_rto ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name

How To merge above 4 query into one?

I tried below query but it gives Error
"Commands out of sync; you can't run this command now"

SELECT prtner_name, (

SELECT COUNT( * ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name
) AS total, (

SELECT SUM( inscan ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name
) AS inscan, (

SELECT SUM( is_deliver ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name
) AS deliver, (

SELECT SUM( is_rto ) 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name
) AS rto

FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name

Best Answer

Since the FROM, WHERE and GROUP BY clause are identical, combine them as follows:

SELECT
    prtner_name,
    COUNT(*)        shipment_count,
    SUM(inscan)     inscan_count,
    SUM(is_deliver) is_deliver_count,
    SUM(is_rto)     is_rto_count 
FROM tbl_shipment
WHERE  `awdno` !=  '' AND  `prtner_name` !=  ''
GROUP BY prtner_name;