获取数据表分组的最大值所在行所有信息的方法

业务系统中经常会有一些统计,比如对商品销量和销售额进行汇总统计,并且获取销量最大的商品,是哪个业务员销售,或则哪个月份最高等等,这样就需要明确知道最大值所在行或者ID,这里提供两种方法进行统计:

首先创建基础数据,如下:

DROP TABLE orders;


CREATE TABLE orders
(id VARCHAR(10),
statu CHAR(1),
goods_id VARCHAR(10),
price DECIMAL(12,2)
)

DELETE FROM orders

INSERT INTO orders(id,goods_id,statu,price) VALUES('1','黄金','1',100);
INSERT INTO orders(id,goods_id,statu,price) VALUES('2','黄金','1',200);
INSERT INTO orders(id,goods_id,statu,price) VALUES('3','黄金','0',300);
INSERT INTO orders(id,goods_id,statu,price) VALUES('4','黄金','1',400);
INSERT INTO orders(id,goods_id,statu,price) VALUES('5','钞票','0',150);
INSERT INTO orders(id,goods_id,statu,price) VALUES('6','钞票','1',250);
INSERT INTO orders(id,goods_id,statu,price) VALUES('7','钞票','0',350);
INSERT INTO orders(id,goods_id,statu,price) VALUES('8','钞票','1',400);

统计方法:

1:

SELECT a.* FROM orders a ,(SELECT b.goods_id,MAX(b.price) price FROM orders b GROUP BY b.goods_id) c WHERE a.goods_id = c.goods_id AND a.`price` = c.price
2:


SELECT a.* FROM orders a WHERE NOT EXISTS(SELECT 1 FROM orders b WHERE  a.goods_id = b.goods_id AND a.price <b.price)



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值