Итак, я пытаюсь получить отчет о том, сколько сообщений электронной почты (с приложением, похожим на MailChimp) было отправлено разными пользователями, но мне нужны две разные метрики в одном запросе.Я хочу знать, сколько отдельных писем было отправлено каждым пользователем.Это означает, что если бы они отправляли 3 электронных письма на 100 контактов каждое, то это отображало бы 300. Но я также хочу знать, сколько уникальных электронных писем было отправлено, то есть, это отобразило бы 3.
Я хотел бы получить что-то, что выглядитнапример:
-------------------------------------------------------------
| Full Name | Username | Total Sent | Unique Mails |
|-------------|-----------------|------------|--------------|
| John Doe | jdoe@mail.com | 12000 | 4 |
| James Smith | jsmith@mail.com | 6000 | 12 |
| Jane Jones | jjones@mail.com | 4000 | 2 |
| ... | ... | ... | ... |
-------------------------------------------------------------
Так что я мог знать, что Джон отправляет несколько писем большому количеству контактов, а Джеймс отправляет больше писем меньшему числу контактов.
Вот как выглядит мой запрос.Я изменил имена таблиц и столбцов, но в остальном это точное представление о том, что это такое.
SELECT
CONCAT(Usernames.FirstName, ' ', Usernames.LastName) AS 'Full Name',
Usernames.Username,
COUNT(Sent_Mail_Contacts.IDContact) AS `Total Sent`,
COUNT(Mass_Mail.IDMass_Mail) AS `Individual E-Mails`
FROM Usernames
LEFT JOIN Sent_Mail_Contacts ON Usernames.Username = Sent_Mail_Contacts.Username
LEFT JOIN Mass_Mail ON Usernames.Username = Mass_Mail.Username
GROUP BY Usernames.Username
ORDER BY `Total Sent`
У меня есть таблица с именами пользователей, таблица с отдельными контактами, по которым достигаются электронные письма, и таблицас уникальными электронными письмами.
Так что мой запрос имеет смысл или нет?Это вообще возможно?Потому что прямо сейчас, когда я запускаю его, он дает мне что-то вроде этого:
-------------------------------------------------------------
| Full Name | Username | Total Sent | Unique Mails |
|-------------|-----------------|------------|--------------|
| John Doe | jdoe@mail.com | 12000 | 12000 |
| James Smith | jsmith@mail.com | 6000 | 6000 |
| Jane Jones | jjones@mail.com | 4000 | 4000 |
| ... | ... | ... | ... |
-------------------------------------------------------------
Я просто даю мне одно и то же число в обоих столбцах и занимает 7 минут для обработки.
ВотПример того, как 3 таблицы будут выглядеть отдельно, если это может помочь:
Usernames
------------------------------------------------
| Username | FirstName | LastName | ... |
|-----------------|-----------|----------|-----|
| jdoe@mail.com | John | Doe | ... |
| jsmith@mail.com | James | Smith | ... |
| jjones@mail.com | Jane | Jones | ... |
| ... | ... | ... | ... |
------------------------------------------------
Mass_Mail
----------------------------------------------------
| ID_Mass_Mail | Username | Date | ... |
|--------------|----------------|------------|-----|
| 1 | jdoe@mail.com | 2019-01-16 | ... |
| 2 | jdoe@mail.com | 2019-01-29 | ... |
| 3 | jjones@mail.com| 2019-02-14 | ... |
| ... | ... | ... | ... |
----------------------------------------------------
Sent_Mail_Contacts
---------------------------------------------------------------------
| ID_Mass_Mail | Username | Contact_ID | Contact_Email | ... |
|--------------|----------------|------------|----------------|------
| 1 | jdoe@mail.com | 1 | bob@mail.com | ... |
| 1 | jdoe@mail.com | 2 | jim@mail.com | ... |
| 1 | jdoe@mail.com | 3 | cindy@mail.com | ... |
| ... | ... | ... | ... | ... |
| 2 | jdoe@mail.com | 4 | mike@mail.com | ... |
| 2 | jdoe@mail.com | 2 | jim@mail.com | ... |
| 2 | jdoe@mail.com | 3 | cindy@mail.com | ... |
| ... | ... | ... | ... | ... |
---------------------------------------------------------------------