Я надеюсь на вашу помощь
У меня есть три таблицы с отношением, активностью [идентификатор, сумма, выполнено], brand_to_activity [идентификатор, идентификатор_ деятельности, brand_id], бренд [идентификатор, имя] Необходимо получить верх 3 бренда продаются по сумме, сгруппированной по месяцам, например, в январе, сумма равна 100 [это сумма трех самых продаваемых брендов в январе], заполненный столбец в unixtime, поэтому вы должны использовать DATE_FORMAT, у меня сейчас следующее:
SELECT `activity`.*, SUM(activity.amount) as groupAmount,
DATE_FORMAT(FROM_UNIXTIME(activity.completed), '%m-%Y') as grouping
FROM `activity`
LEFT JOIN `brand_to_activity` ON `activity`.`id` = `brand_to_activity`.`activity_id`
WHERE (`activity`.`completed` BETWEEN '1546300800' AND '1577750400')
GROUP BY `grouping` ORDER BY `activity`.`completed`
Должно быть что-то вроде этого:
Grouping | Amount | Profit | Note
January 100 50 Philips, Sony, Apple
February 100 50 Apple, Microsoft, Canon
March 50 50 Philips, Apple, AOC
версия MariaDB 10
https://mega.nz/#!zFdAHACA!2CCVBVjMvwAxMqEz202a107s1CDxKc8jkvZiGQ5NJ0c
https://mega.nz/#!jNFCCQiL!MODxZR5kwCBXG6789uBZEVZhsdcZxY8W55qyIa-B4KQ
https://mega.nz/#!XRcAWAIT!xASyVxE3ucRiVtLJmjCKys7plImxLMOH99dRQVVSkDM