SQL отсортирован по различным полям

#mysql #sql

#mysql #sql

Вопрос:

У меня есть следующие таблицы и строки. И мне нужно написать SELECT, который возвращает все категории, отсортированные по:

(А) количество элементов, которые у них есть, и (Б) название категории.

Этот запрос должен получить следующие столбцы: название категории, количество элементов (КАК N_ITEMS) и среднюю цену названий в этой категории (КАК AVERAGE_PRICE)

 CREATE TABLE `category` (
  `CATEGORY_ID` int(11) NOT NULL,
  `CATEGORY_NAME` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `category` (`CATEGORY_ID`, `CATEGORY_NAME`) VALUES
(1, 'Sports'),
(2, 'Actualités'),
(3, 'Animaux'),
(4, 'Economie'),
(5, 'Cuisine');


CREATE TABLE `item` (
  `ITEM_ID` int(11) NOT NULL,
  `CATEGORY_ID` int(11) NOT NULL,
  `ITEM_NAME` varchar(50) NOT NULL,
  `ITEM_PRICE` decimal(8,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `item` (`ITEM_ID`, `CATEGORY_ID`, `ITEM_NAME`, `ITEM_PRICE`) VALUES
(1, 1, 'Equip', '6.00'),
(2, 2, 'Le Monde', '3.00'),
(3, 2, 'Le Parisien', '2.50'),
(4, 2, 'France soir', '3.00'),
(5, 3, '30 Million damis', '6.20'),
(6, 3, 'Cheval pratique', '4.50'),
(7, 4, 'Capital', '2.50');

ALTER TABLE `category`
  ADD PRIMARY KEY (`CATEGORY_ID`);

ALTER TABLE `item`
  ADD PRIMARY KEY (`ITEM_ID`);

ALTER TABLE `category`
  MODIFY `CATEGORY_ID` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `item`
  MODIFY `ITEM_ID` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
  

Комментарии:

1. Укажите также ожидаемый результат!

Ответ №1:

Вы можете попробовать ниже —

 select CATEGORY_NAME, count(ITEM_ID) as noofItem,avg(item_price) as avgprice
from category inner join item on category.category_id=item.category_id
group by CATEGORY_NAME
order by noofItem,CATEGORY_NAME
  

Комментарии:

1. Приятно! Большое спасибо

2. Приятно! Большое спасибо