如何在sql数据库之中对数据排序

问题已经解决:建议大家先看@孤陌 的方法https://blog.csdn.net/wendellup/article/details/8599479  这个理解起来比较简单
之后再看@iJeanChen 提供的左连方法查询,实际上这种方法和@孤陌提供的一样,只是数据表在比较复杂的情况下比较难理解。另外非常感谢@iJeanChen提供的分析函数@rownum:=@rownum+1方法


以帆软demo中的例子为说明,表为销量
SELECT 地区 area,销售员 salesman,sum(销量) sum_sales  FROM 销量
group by salesman

现在已经实现

现在需要完成的任务新增加一个字段rank,按照sum_sales字段由1—N进行排序
该如何修改
编辑于 2018-9-28 11:13  
编辑于 2018-9-28 11:14  
编辑于 2018-9-28 11:14  
编辑于 2018-9-28 11:17  
FineReportli949507925 发布于 2018-9-28 09:13
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共15回答
最佳回答
0
iJeanChen发布于2018-9-28 09:13(编辑于 2023-9-6 09:34)
555
  • iJeanChen iJeanChen ?我手写的呀,什么直接黏贴的?
    例子,你是说这贴的例子吗?一样的处理方式呀
    select t1.area,t1.salesman,t1.sum_sales,count(distinct t2.sum_sales) as rank
    from
        (
        SELECT 地区 area,销售员 salesman,sum(销量) sum_sales
        FROM 销量
        group by 地区,销售员
        ) t1
    left join
        (
        SELECT 地区 area,销售员 salesman,sum(销量) sum_sales
        FROM 销量
        group by 地区,销售员
        ) t2
    on t2.sum_sales>=t1.sum_sales
    group by t1.area,t1.salesman,t1.sum_sales
    order by rank,t1.salesman;
    回复
    2018-09-28 10:27 
最佳回答
0
li771488330发布于2018-9-28 09:18(编辑于 2023-9-6 09:34)
555
  • li771488330 li771488330 还有你这语句有问题吧,area也要加在group by 后面吧
    回复
    2018-09-28 09:22 
  • li949507925 li949507925(提问者) 评论 li771488330 :新增加一个字段rank,新增加一个字段rank,新增加一个字段rank!!!还有语句没问题,还有语句没问题,还有语句没问题!!!
    回复
    2018-09-28 09:41 
最佳回答
0
影丶发布于2018-9-28 09:19(编辑于 2023-9-6 09:34)
555
最佳回答
0
iJeanChen发布于2018-9-28 09:32(编辑于 2023-9-6 09:34)
555
  • iJeanChen iJeanChen 支持分析函数的话,分析函数是最好的方法。MySQL5.7没有分析函数,只有使用变量了(就是加@ 的那一个)。
    回复
    2018-09-28 09:47 
  • iJeanChen iJeanChen 帆软报错?你数据库是mysql5.7吗?
    回复
    2018-09-28 09:50 
  • iJeanChen iJeanChen 我写的就是sql呀,放到mysql中可以运行的呀。帆软的sql是弄到数据库里跑的,帆软报错,说明连的数据库不支持这种语法。
    回复
    2018-09-28 09:54 
  • iJeanChen iJeanChen 你帆软的数据连接怎么设置的?连接的什么类型的数据库?
    回复
    2018-09-28 09:55 
最佳回答
0
JBadmin发布于2018-9-28 09:47(编辑于 2023-9-6 09:34)
555
最佳回答
0
li949507925发布于2018-9-28 09:53(编辑于 2023-9-6 09:34)
555
  • iJeanChen iJeanChen demo是SQLite数据库,没有分析函数,也没有@这种用法,所以会报错
    回复
    2018-09-28 09:57 
  • li949507925 li949507925(提问者) 评论 iJeanChen :那就没有别的方法了吗,能看一下这个网页吗
    这里面他好像也没有用分析函数的方法https://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf?tpId=82&tqId=29775&tPage=2&rp=&ru=/ta/sql&qru=/ta/sql/question-ranking
    回复
    2018-09-28 10:00 
  • iJeanChen iJeanChen 有其他方法,性能不好就是了,参考:http://bbs.fanruan.com/thread-117329-1-1.html
    回复
    2018-09-28 10:05 
最佳回答
0
iJeanChen发布于2018-9-28 09:59(编辑于 2023-9-6 09:34)
555
最佳回答
0
孤陌发布于2018-9-28 10:19(编辑于 2023-9-6 09:34)
555
最佳回答
0
孤陌发布于2018-9-28 10:21(编辑于 2023-9-6 09:34)
555
最佳回答
0
wukaihua发布于2018-9-28 10:23(编辑于 2023-9-6 09:34)
555
  • wukaihua wukaihua 什么啊,你回错人了把,我刚看到的问题诶
    回复
    2018-09-28 10:34 
  • li949507925 li949507925(提问者) 评论 wukaihua :尴尬了
    回复
    2018-09-28 10:39 
  • wukaihua wukaihua sqlite没有rownum函数,所以是按销售额大小来计数,就是拿出一个金额,在这个数据集里找有几个比他小的,结果拿来作为他的行号
    回复
    2018-09-28 10:47 
  • 0关注人数
  • 712浏览人数
  • 最后回答于:2018-9-28 10:50
    活动推荐 更多
    热门课程 更多
    返回顶部