Я предполагаю, что вы хотите, чтобы записи группировались как таковые или аналогичные по группам, основываясь на том, что вы включили поле create_at:
SELECT email, GROUP_CONCAT( DISTINCT created_at ORDER BY created_at DESC ) AS list_of_dates FROM invitations GROUP BY email;
, чтобы произвести что-то вроде:
email | list_of_dates
==========================================================
jenny@hotmail.com | 01/26/2019, 01/23/2019
jonny@gmail.com | 01/23/2019, 01/18/2019, 01/13/2019
greg@yahoo.com | 01/13/2019
или альтернативно:
SELECT created_at, GROUP_CONCAT( DISTINCT email ORDER BY created_at DESC SEPARATOR '; ' ) AS list_of_dates FROM invitations GROUP BY created_at;
created_at | list_of_emails
====================================
01/26/2019 | jenny@hotmail.com
01/23/2019 | jenny@hotmail.com; jonny@gmail.com
01/18/2019 | jonny@gmail.com
01/13/2019 | jonny@gmail.com; greg@yahoo.com
В контексте GROUP_CONCAT (), GROUP BY является необязательным и используется для дальнейшего разбиения группировок за пределы однострочного агрегата.Если предложение GROUP BY не указано, оно объединит все в одну строку.
- Ключевое слово DISTINCT внутри GROUP_CONCAT () должно предшествовать полям конкатенации и даст только уникальное поле.возвращаемые значения
- Необязательный ORDER BY следует за полями конкатенации и работает так же, как в запросах SELECT
- SEPARATOR также необязателен, но должен также следовать ORDER BY, если также используется;это позволяет вам указать присоединяющую строку, используемую при конкатенации
В зависимости от того, сколько записей / как долго может длиться конкатенация, вы можете настроить максимальное значение, установив переменную сеанса:
SET SESSION group_concat_max_len=<max length>
В любом случае - используйте GROUP BY для любого поля, которое вы хотите суммировать, и включите остальные в GROUP_CONCAT, надеюсь, это поможет.