SELECT COUNT(*) AS customer, t.state
FROM tbl_parcel_item t
WHERE t.courier_name='Tnt'
AND t.date = '2018-03-12'
AND t.ship_status NOT IN (0,1,9,10)
GROUP BY t.state'
Исходя из приведенного выше sql, результаты будут такими: введите описание изображения здесь. Как сделать так, чтобы он получал итоговый результат, например, выше: введите описание изображения здесь.
01) С ROLLUP, как объяснено в других ответах
02) Используйте Union Query
SELECT t.state, COUNT(*) AS customer FROM tbl_parcel_item t WHERE t.courier_name='Tnt' AND t.date = '2018-03-12' AND t.ship_status NOT IN (0,1,9,10) GROUP BY t.state
UNION
SELECT 'Total', COUNT(*) AS customer FROM tbl_parcel_item t WHERE t.courier_name='Tnt' AND t.date = '2018-03-12' AND t.ship_status NOT IN (0,1,9,10)
Использовать with rollup
:
SELECT COUNT(*) AS customer, t.state'
FROM tbl_parcel_item t
WHERE t.courier_name = 'Tnt' AND
t.date = '2018-03-12' AND
t.ship_status NOT IN (0, 1, 9, 10)
GROUP BY t.state WITH ROLLUP;
Используйте объединение всех:
'SELECT COUNT(*) AS customer, t.state'
'FROM tbl_parcel_item t'
'WHERE t.courier_name='Tnt''
'AND t.date = '2018-03-12''
'AND t.ship_status NOT IN (0,1,9,10)'
'GROUP BY t.state'
'UNION ALL'
'SELECT COUNT(*) AS customer, 'Total' as state'
'FROM tbl_parcel_item t'
'WHERE t.courier_name='Tnt''
'AND t.date = '2018-03-12''
'AND t.ship_status NOT IN (0,1,9,10)'
Используйте ROLLUP
:
SELECT
COALESCE(t.state, 'TOTAL') AS state,
COUNT(*) AS customer
FROM tbl_parcel_item t
WHERE
t.courier_name = 'Tnt' AND
t.date = '2018-03-12' AND
t.ship_status NOT IN (0,1,9,10)
GROUP BY t.state WITH ROLLUP;
Сделайте еще один запрос поверх вашего запроса, как показано ниже:
Select sum(customer) as Total
FROM
(
SELECT COUNT(*) AS customer, t.state'
FROM tbl_parcel_item t
WHERE t.courier_name = 'Tnt' AND
t.date = '2018-03-12' AND
t.ship_status NOT IN (0, 1, 9, 10)
GROUP BY t.state
)a;