Узнать среднюю цену

Допустим в магазине есть какое-то количество категорий и мне нужно узнать среднюю цену товаров в каждой категории (рассчитать автоматически) и вывести данные на страницу в таблице, примерно так:

2020-12-29_21-49-17

Хотелось бы понять, что можно сделать. Это сложная задача и требуется создание какого-то специфического модуля или это что-то стандартное и существует готовое решение?

Можно так попробовать: В контроллере, где хотите вывести данные:

$params = array(
	'simple' => true,
	'plain' => true,
);
list($category_list, ) = fn_get_categories($params);

$avg_prices = [];

foreach($category_list as $category_data){
	$category_id = $category_data['category_id'];
	
	$product_ids = db_get_fields("SELECT product_id FROM ?:products_categories WHERE category_id = ?i AND 	link_type = ?s", $category_id, 'M');
	
	if(empty($product_ids)){
		continue;
	}
	
	$avg_price = db_get_field("SELECT AVG(price) FROM ?:product_prices WHERE product_id IN (?n) AND lower_limit = ?i ", $product_ids, 1);
	
	$avg_prices[$category_id] = array(
		'category_id' => $category_id,
		'category'    => $category_data['category'],
		'avg_price'   => fn_format_price($avg_price),
		'count_products'   => count($product_ids)
	);
}

Tygh::$app['view']->assign('avg_prices', $avg_prices);

Далее в tpl шаблоне вывести: (Пример оформления в столбец) Вид массива https://skr.sh/s5tzcBkjG8y

{foreach from=$avg_prices item="avg_data"}
{$avg_data.category} - {$avg_data.avg_price}. Всего товаров: {$avg_data.count_products}<br/>
{/foreach}

Не хватает учёта группы пользователя и подкатегорий. Но это можно поправить
Ну и отдельно стоит отметить, что акции это учитывать не будет. Тут уж просто не получится

Да, это заготовка, условий добавить можно соответственно. Зависит от конечной задачи. :slight_smile:
plain параметр как раз выстраивает список разделов без подкатегорий, подсчет будет относительного главной категории товара.

да, я понимаю, просто предупредить людей кто не сможет прочитать код что, к примеру, в Электронике цен не будет, так как непосредственно в ней нет ни одного товара, хотя в подкатегориях есть.