免费注册 查看新帖 |

Chinaunix

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

【已解决】查询语句求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-09 23:50 |只看该作者 |倒序浏览
本帖最后由 cenalulu 于 2012-05-10 11:44 编辑

有表如下:Create Table: CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,comment '用户名字'
  `amount` int(11) DEFAULT NULL, comment '每次充值额'
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
)   充值总额小于1000的为vip1级用户,小于5000的为vip2级用户,小于10000的为vip3级用户,求各级用户的数量,想不出来整做啊。。

论坛徽章:
0
2 [报告]
发表于 2012-05-10 09:20 |只看该作者
本帖最后由 龙雪刚 于 2012-05-10 09:23 编辑
  1. mysql> select * from user;
  2. +----+------+--------+---------------------+
  3. | id | name | amount | time                |
  4. +----+------+--------+---------------------+
  5. |  1 | aa   |     50 | 2012-05-10 08:48:37 |
  6. |  2 | bb   |     50 | 2012-05-10 08:48:41 |
  7. |  3 | aa   |     50 | 2012-05-10 08:48:46 |
  8. |  4 | aa   |    500 | 2012-05-10 08:48:50 |
  9. |  5 | bb   |   1000 | 2012-05-10 08:48:56 |
  10. |  6 | cc   |   1000 | 2012-05-10 08:49:00 |
  11. |  7 | cc   |   4000 | 2012-05-10 08:49:04 |
  12. |  8 | cc   |   4000 | 2012-05-10 08:49:08 |
  13. |  9 | aa   |    200 | 2012-05-10 08:49:19 |
  14. | 10 | dd   |    200 | 2012-05-10 08:49:26 |
  15. | 11 | ee   |   2000 | 2012-05-10 08:49:31 |
  16. | 12 | ee   |   1000 | 2012-05-10 08:49:34 |
  17. | 13 | ff   |   1000 | 2012-05-10 08:49:38 |
  18. | 14 | ff   |   2000 | 2012-05-10 08:49:41 |
  19. | 15 | ff   |   3000 | 2012-05-10 08:49:44 |
  20. | 16 | gg   |  10000 | 2012-05-10 08:49:53 |
  21. +----+------+--------+---------------------+
  22. 16 rows in set (0.00 sec)

  23. mysql>  select name,group_concat(amount),sum(amount) as sum,case when sum(amount) <5000 then case when sum(amount) < 1000 then "vip1" else "vip2" end else "vip3" end as level from user group by name;
  24. +------+----------------------+-------+-------+
  25. | name | group_concat(amount) | sum   | level |
  26. +------+----------------------+-------+-------+
  27. | aa   | 50,50,500,200        |   800 | vip1  |
  28. | bb   | 50,1000              |  1050 | vip2  |
  29. | cc   | 1000,4000,4000       |  9000 | vip3  |
  30. | dd   | 200                  |   200 | vip1  |
  31. | ee   | 2000,1000            |  3000 | vip2  |
  32. | ff   | 1000,2000,3000       |  6000 | vip3  |
  33. | gg   | 10000                | 10000 | vip3  |
  34. +------+----------------------+-------+-------+
  35. 7 rows in set (0.00 sec)

  36. mysql> select level,count(*) from ( select name,case when sum(amount) <5000 then case when sum(amount) < 1000 then "vip1" else "vip2" end else "vip3" end as level from user group by name) tmp group by level;
  37. +-------+----------+
  38. | level | count(*) |
  39. +-------+----------+
  40. | vip1  |        2 |
  41. | vip2  |        2 |
  42. | vip3  |        3 |
  43. +-------+----------+
  44. 3 rows in set (0.00 sec)
复制代码

评分

参与人数 1可用积分 +1 收起 理由
小版主杀手 + 1 感谢帮助

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2012-05-10 11:27 |只看该作者
感谢2楼大哥~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP