mysql group by xx top N

今天 运营又要数据;

            

1、每个产品的品牌、货号、规格、单位、单价、销售总数量、销售总额、销售订单数、采购实验室数、供货商(销售金额最高的3个商家);
2、品牌、货号相同,即为一个产品;
3、包含线上与线下数据;
4、2015年与2016年分开统计。

 前面几个数据还好 就是  供货商(销售金额最高的3个商家) 这个不好整

我的思路是前面的抽出 一张表 A表(商品id ……)

后面的抽出一张表 B表(供应商id ,总价格,商品id )

create table temp_suppler_key1 as
 SELECT t.fkey,  
 substring_index( group_concat( IFNULL(t.`name`,0) ORDER BY t.tprice DESC ), ",", 3 ) `name` 

FROM temp_suppler_key  t GROUP BY t.fkey  ;

1、先group_concat 排序 然后在substring 比较不错


网上有大神这样解决的感觉不错

http://www.wfuyu.com/datay/21132.html

依照a,b分组,并且依照itime字段倒叙排列,取每组的top3

SELECT t.a, t.b, substring_index( group_concat( IFNULL(t.c,0) ORDER BY t.itime DESC ), ",", 3 ) c, substring_index( group_concat( t.itime ORDER BY t.itime DESC ), ",", 3 ) time FROM t t GROUP BY t.a ,t.b;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值