当前位置 博文首页 > concat结合distinct筛选符合条件的记录_grandesucesso的博客:gr

    concat结合distinct筛选符合条件的记录_grandesucesso的博客:gr

    作者:[db:作者] 时间:2021-09-13 09:49

    首先,创建一张外卖平台的“订单信息表”order_list,如下:
    在这里插入图片描述

    查询: 2018年1月只吃了“麻辣烫”和“汉堡”的用户数量

    select count(*) 
    from 
    (select user_id, group_concat(distinct order_category) 下单菜品
    from order_list
    where date_format(order_time, "%Y-%m")='2018-1'
    group by user_id
    having  下单菜品 like '汉堡,麻辣烫'  or  '麻辣烫,汉堡' ) t ;   # 只吃了“麻辣烫”和“汉堡”,因此去重后用group_concat合并生成的只有这两种可能
    

    注意:group_concat函数并不具备对字符串的去重功能,如果要对要进行合并的字符串进行去重,可以在group_concat的参数字段名前加上"distinct"关键字,如本例所示。

    结果如下:
    在这里插入图片描述

    查询:每个用户吃的最多的食品品类,以及在该品类上的总消费金额

    select user_id, order_category, 总消费金额
    from 
    
    (select t1.*, row_number() over (partition by user_id order by 下单次数 desc ) 下单次数排名
    from 
    (select user_id,order_category, count(*) 下单次数, sum(order_amt) 总消费金额
    from order_list
    group by user_id,order_category ) t1) t2  # 多字段分组
    
    where 下单次数排名=1;   
    

    结果如下:
    在这里插入图片描述

    cs