[ОТВЕТИТЬ]
Опции темы
10.02.2009 17:30  
Pyatak
Ниже приведен пример простого запроса, который получает, допустим, среднюю цену товара по каждой подгруппе. Как сделать тоже самое, только с группировкой по старшим группам?
Код:
SELECT cc.tree AS "Подгруппа",
       AVG(p.price) AS "Цена"
       
  FROM supermag.smcard c,
       supermag.sacardclass cc,
       supermag.smprices p

 WHERE c.idclass = cc.id
   AND p.article = c.article
   AND c.accepted = 1

GROUP BY cc.tree
 
10.02.2009 17:52  
Vlad
Код:
' select a.id,'+
               ' a.tree,'+
	             ' a.prtree,'+
	             ' nvl(p.id,0) pr_id,'+
	             ' a.tree ||chr(32)|| a.name as name,'+
               ' a.put_n'+
        ' from'+
        ' (select id,'+
                ' replace(tree,chr(35)) tree,'+
	              ' nvl(rtrim(rtrim(tree,'+''''+'.'+''''+'),'+''''+'1234567890'+''''+'),'+''''+'#'+''''+') prtree,'+
	              ' name,'+
                ' to_number(replace((replace(tree,chr(46))),chr(35),chr(48))) put_n'+
        ' from sasupplierclass) a,'+
             ' sasupplierclass p'+
             ' where a.prtree=p.tree'+
         ' order by a.put_n';
где a.ptree - путь родителя группы a.tree
а pr_id ИД родителя группы a.id
 
10.02.2009 17:55  
Mtirt
Код:
 SELECT substr(cc.tree,1,instr(cc.tree, '.',1)-1) AS "Группа",
       AVG(p.price) AS "Цена"
       
  FROM supermag.smcard c,
       supermag.sacardclass cc,
       supermag.smprices p

 WHERE c.idclass = cc.id
   AND p.article = c.article
   AND c.accepted = 1

GROUP BY substr(cc.tree,1,instr(cc.tree, '.',1)-1)
 
11.02.2009 10:54  
Pyatak
Спасибо вам. Так как вариант Mtirt попроще, попробовал его, работает :)
 
17.02.2009 17:41  
deucel
Цитата:
Сообщение от Pyatak
Так как вариант Mtirt попроще, попробовал его, работает :)
До кучи, пример с СМ пакетом.

Код:
SELECT   classifier.gettitlebypath (classifier.gettreeprefix (cc.tree, 0), 'SACARDCLASS') "Группа", ROUND (AVG (p.price), 2) "Цена"
    FROM supermag.smcard c, supermag.svaartclassif cc, supermag.smprices p
   WHERE c.article = cc.article AND p.article = c.article AND c.accepted = 1
GROUP BY classifier.gettreeprefix (cc.tree, 0)
если не нужен c.accepted = 1 или вынесено в отдельную группу, то можно и supermag.smcard c выкинуть.
 
 
Опции темы



Часовой пояс GMT +3, время: 16:46.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.