Advertisement
gahcep

Query_Quiz_2

May 3rd, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.31 KB | None | 0 0
  1. SELECT
  2.  
  3.   # Название месяца
  4.   DATE_FORMAT(FROM_UNIXTIME(_in.UNIX_DATE), "%M")
  5.    AS Month,
  6.  
  7.   # Имя покупателя
  8.   (SELECT of_name FROM contragents WHERE id = _in.BUYER)
  9.    AS Buyer,
  10.  
  11.   # Среднее количество строк по каждой накладной
  12.   AVG(_in.BUYER_CG_COUNT)
  13.    AS CG_COUNT,
  14.  
  15.   # Среднее количество единиц товара по каждой накладной
  16.   AVG(_in.PRODUCT_COUNT_AVG)
  17.    AS PRODUCT_COUNT_AVG,
  18.  
  19.   # Средняя цена с НДС по каждой накладной
  20.   AVG(_in.PRICE_NDS_AVG)
  21.    AS PRICE_AVG
  22.  
  23. FROM
  24.   (
  25.      SELECT    
  26.        c.buyer_id AS BUYER,
  27.        
  28.        # Помесячный вывод
  29.        (FLOOR(MONTH(FROM_UNIXTIME(c.date)))) as MONTH,
  30.  
  31.        # Время в формате UNIXTIME для функции DATE_FORMAT выше
  32.        c.date AS UNIX_DATE,
  33.        
  34.        # Среднее количество единиц товара по каждой накладной.
  35.        # Имейте в виду, что рассчитывается сначала среднее по всем товарам конкретной
  36.        # записи конкретной накладной, а потом уже по всем накладным выводится среднее
  37.        avg(cg.product_count) as PRODUCT_COUNT_AVG,
  38.      
  39.        # Среднее по всем ценам с НДС (без умножения на количество товара),
  40.        # также высчитывается средная цена по покупателям на основе средних каждой накладной
  41.        avg(cg.price_with_nds) as PRICE_NDS_AVG,
  42.      
  43.        # Среднее количество строк накладной у каждого клиента
  44.        (SELECT COUNT(*) FROM consignment_goods WHERE consignments_id = c.id) AS BUYER_CG_COUNT
  45.      
  46.      # Благодаря LEFT JOIN избавляемся от пустых строк consignment_goods
  47.      # (в случае, когда накладная есть, а записей по ней нет)
  48.      FROM consignment_goods AS cg LEFT JOIN consignments AS c
  49.        ON cg.consignments_id = c.id
  50.          GROUP BY c.id
  51.   )
  52.     AS _in
  53.  
  54. GROUP BY _in.MONTH, Buyer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement