mysql - SQL 按不同字段排序
问题描述
我有下一个表和行。我需要编写一个 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;
解决方案
你可以试试下面 -
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
推荐阅读
- java - StandAlone DroolsApplication 工作正常,但与我的产品捆绑时相同的应用程序无法工作
- c# - “ARCamera”游戏对象没有附加“相机”
- c# - Environment.NewLine 在 Mono C# 中不起作用
- sqlite - 从数据库助手类返回数据到组件反应原生
- c - 二维数组给出错误的输出
- react-native - 灯箱不会触发动作
- python - NumPy:如何使用重复的左连接数组
- ios - 实例成员“setData”不能用于“PreviewView”类型;你的意思是使用这种类型的值吗?
- postgresql - 在 alembic 中添加/删除 PostgreSQL ENUM 类型的值
- tableau-api - 如何使用排除计算总计百分比?