Из исходной таблицы с идентификатором транзакции и суммой транзакции мне нужно получить итоговые суммы, сгруппированные по идентификаторам.
Суть в том, что к идентификаторам может или не может быть добавлен суффикс '_rebate'.
Мне нужно игнорировать его, и я могу удалить его с помощью регулярных выражений, но затем GROUP BY перестает работать.
То есть
запрос
SELECT contract, REGEXP_SUBSTR(alias_id, '.+?(?=_rebate|$)') as alias_id, sum
FROM yt_reportLIMIT 10
возвращает
+-----------+----------------------------------+-------+
| contract | alias_id | sum |
+-----------+----------------------------------+-------+
| 187453/19 | 758ad57482d621f9b54d67f07b543f46 | 70.8 |
| 187453/19 | 3df373604d0b3f38aca283083468efd5 | 146.4 |
| 187453/19 | 3c6caf755f4e16c798c262ed06a735b3 | 70.8 |
| 187453/19 | 197358f0e522224f9a4e0b24ec265cfc | 139.2 |
| 187453/19 | 0815b324b5e81a199a984442f4d42bc8 | 93.6 |
| 187453/19 | 9e5203f585d622b0a95fc31c2e1a19be | 153.6 |
| 187453/19 | d1e1bbd7302233deac6e18107cac541f | 87.6 |
| 187453/19 | dd92fae2fc9c1fc7b208821f2f913724 | 127.2 |
| 187453/19 | b250e741e4e118fe8289e37f4bfd8523 | 148.8 |
| 187453/19 | 7bf53c61ca61162cb6f1406992acfdff | 96 |
+-----------+----------------------------------+-------+
но
SELECT te.contract, te.alias_id, ROUND(SUM(te.sum),2) as b_sum
FROM
(SELECT contract, REGEXP_SUBSTR(alias_id, '.+?(?=_rebate|$)') as alias_id, sum
FROM yt_report LIMIT 10) as te
GROUP BY te.alias_id, te.contract LIMIT 10
возвращает
+-----------+----------+---------+
| contract | alias_id | b_sum |
+-----------+----------+---------+
| 187453/19 | | 1134.00 |
+-----------+----------+---------+
В таблице нет идентификаторов NULL. Похоже, что запрос обработанного регулярным выражением поля из подзапроса не работает.
Как это можно решить?