SQL сортируется по разным полям - PullRequest
1 голос
/ 09 апреля 2019

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

(A) количество предметов, которые они имеют и (B) название категории.

Этот запрос должен извлекать следующие столбцы: название категории, количество элементов (AS N_ITEMS) и средняя цена заголовков в этой категории (AS 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 Ответ

0 голосов
/ 09 апреля 2019

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...