Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT
- # Название месяца
- DATE_FORMAT(FROM_UNIXTIME(_in.UNIX_DATE), "%M")
- AS Month,
- # Имя покупателя
- (SELECT of_name FROM contragents WHERE id = _in.BUYER)
- AS Buyer,
- # Среднее количество строк по каждой накладной
- AVG(_in.BUYER_CG_COUNT)
- AS CG_COUNT,
- # Среднее количество единиц товара по каждой накладной
- AVG(_in.PRODUCT_COUNT_AVG)
- AS PRODUCT_COUNT_AVG,
- # Средняя цена с НДС по каждой накладной
- AVG(_in.PRICE_NDS_AVG)
- AS PRICE_AVG
- FROM
- (
- SELECT
- c.buyer_id AS BUYER,
- # Помесячный вывод
- (FLOOR(MONTH(FROM_UNIXTIME(c.date)))) as MONTH,
- # Время в формате UNIXTIME для функции DATE_FORMAT выше
- c.date AS UNIX_DATE,
- # Среднее количество единиц товара по каждой накладной.
- # Имейте в виду, что рассчитывается сначала среднее по всем товарам конкретной
- # записи конкретной накладной, а потом уже по всем накладным выводится среднее
- avg(cg.product_count) as PRODUCT_COUNT_AVG,
- # Среднее по всем ценам с НДС (без умножения на количество товара),
- # также высчитывается средная цена по покупателям на основе средних каждой накладной
- avg(cg.price_with_nds) as PRICE_NDS_AVG,
- # Среднее количество строк накладной у каждого клиента
- (SELECT COUNT(*) FROM consignment_goods WHERE consignments_id = c.id) AS BUYER_CG_COUNT
- # Благодаря LEFT JOIN избавляемся от пустых строк consignment_goods
- # (в случае, когда накладная есть, а записей по ней нет)
- FROM consignment_goods AS cg LEFT JOIN consignments AS c
- ON cg.consignments_id = c.id
- GROUP BY c.id
- )
- AS _in
- GROUP BY _in.MONTH, Buyer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement