У меня есть таблица, которая выглядит примерно как этот пример c.
+-------+--------------+------------+---------------+-----------+----------+
| id | name | amount | payment_type | year | period |
+-------+--------------+------------+---------------+-----------+----------+
| 1 | Bob | 20 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 2 | Jim | 40 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 3 | Bob | 60 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 4 | Jim | 20 | Voucher | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 5 | Bob | 40 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 6 | Bob | 20 | Cheque | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 7 | Jim | 20 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 8 | Bob | 20 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 9 | Bob | 20 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 10 | Dan | 20 | BACS | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
| 11 | Dan | 20 | Voucher | 2019 | 5 |
+-------+--------------+------------+---------------+-----------+----------+
etc...
Я хотел бы подвести итоги этой таблицы (еще много строк) и подсчитать общее количество количество строк для каждого пользователя, общая сумма столбца суммы для каждого пользователя и общая сумма каждого типа платежа для каждого пользователя, суженная по году и периоду каждый раз, когда я запускаю этот запрос. (Год и период выбираются пользователем в форме.) В результате я получаю набор результатов, который выглядит примерно так:
+-------+--------------+------------+---------------+-----------+----------+
| name | Total | BACS | Cheque | Voucher | Cost |
+-------+--------------+------------+---------------+-----------+----------+
| Bob | 6 | 5 | 1 | 0 | 180 |
+-------+--------------+------------+---------------+-----------+----------+
| Jim | 3 | 2 | 0 | 1 | 80 |
+-------+--------------+------------+---------------+-----------+----------+
| Dan | 2 | 1 | 0 | 1 | 40 |
+-------+--------------+------------+---------------+-----------+----------+
Поэтому мне нужен какой-то поворотный запрос, используя случай с суммой примерно такой:
SELECT
name,
SUM(CASE WHEN YEAR = '$safefy' THEN 1 ELSE 0 END) AS total,
SUM(CASE WHEN payment_type = 'BACs' OR payment_type = 'BACS' THEN 1 ELSE 0 END) AS BACS,
SUM(CASE WHEN payment_type = 'Cheque' THEN 1 ELSE 0 END) AS Cheque,
SUM(CASE WHEN payment_type = 'Voucher' THEN 1 ELSE 0 END) AS Voucher,
<Not sure what goes here.> AS Cost,
FROM
table_name
WHERE
YEAR = '2019' AND period = '5'
GROUP BY
name "
Но я не уверен, как подсчитать стоимость из столбца суммы таблиц для каждого пользователя. Вероятно, я не использую правильные термины в своем поиске ответов, потому что я не знаю, как это называется?