免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6815 | 回复: 3
打印 上一主题 下一主题

请教一下MySQL计算百分比的问题 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-09 17:38 |只看该作者 |倒序浏览
请教一下大家,目前遇到个问题不知如何处理,问题描述如下:
假设有一个表,有四列,前两列mm mn为varchar,后两列为int:
#mm mn value count
aaa  bbb  1      5   
aaa  bbb  2     3
aaa  bbb  3      2
ccc  ddd  1      2
ccc  ddd  2      4
ccc  ddd  3      4
这时想要加一列,比如叫persent,就是计算相同mm,mn,但是value不同的,count次数的百分比,SQL语句应该如何写?
就是得到类似如下的表,或者persent用小数表示也行:
#mm mn value count  persent
aaa  bbb  1      5           50%
aaa  bbb  2     3            30%
aaa  bbb  3      2           20%
ccc  ddd  1      2           20%
ccc  ddd  2      4           40%
ccc  ddd  3      4           40%

感谢大家!

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
2 [报告]
发表于 2016-03-10 09:25 |只看该作者
这只是select语句,有需要加上create table就可以了:
  1. mysql> select * from test;
  2. +-----+-----+-------+-------+
  3. | mm  | mn  | value | count |
  4. +-----+-----+-------+-------+
  5. | aaa | bbb |     1 |     5 |
  6. | aaa | bbb |     2 |     3 |
  7. | aaa | bbb |     3 |     2 |
  8. | ccc | ddd |     1 |     2 |
  9. | ccc | ddd |     2 |     4 |
  10. | ccc | ddd |     3 |     4 |
  11. +-----+-----+-------+-------+
  12. 6 rows in set

  13. mysql> select test.*, concat(format(count / s * 100, 2), "%") as percent
  14. from test
  15. left join
  16. (
  17.         select mm, mn, sum(count) as s
  18.         from test
  19.         group by mm, mn
  20. ) as tmp
  21. on test.mm = tmp.mm and test.mn = tmp.mn;
  22. +-----+-----+-------+-------+---------+
  23. | mm  | mn  | value | count | percent |
  24. +-----+-----+-------+-------+---------+
  25. | aaa | bbb |     1 |     5 | 50.00%  |
  26. | aaa | bbb |     2 |     3 | 30.00%  |
  27. | aaa | bbb |     3 |     2 | 20.00%  |
  28. | ccc | ddd |     1 |     2 | 20.00%  |
  29. | ccc | ddd |     2 |     4 | 40.00%  |
  30. | ccc | ddd |     3 |     4 | 40.00%  |
  31. +-----+-----+-------+-------+---------+
  32. 6 rows in set
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00
3 [报告]
发表于 2016-03-10 13:31 |只看该作者
感谢大神,经测试可用,谢谢!回复 2# seesea2517


   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
4 [报告]
发表于 2016-03-10 14:57 |只看该作者
回复 3# bingdele


    加油,这个不厉害啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP