怎样高效率的统计一段时间范围内的新增充值人数的SQL写法(MYSQL)
需要查出指定时间范围内的结果是:充值人数 充值次数 新增充值人数 充值金额其中:充值人数 充值次数 充值金额 是没有问题的,直接做分组计算 就可以完成的;但是“新增充值人数” 是非常麻烦的,按你的数据库设计与业务描述要求而言,推荐你再维护一张表,那就是记录首次充值的帐号与发生时间,这样先通过表:`payment` 计算一段时间内充值的UID,再跟存储首次充值帐号的表关联 去除掉就可以得出你所所的值。否则按你现在的做法,不仅每次非常慢,而且非常麻烦...
■网友
哈哈 这个要收费
■网友
select count(*) from (select account min(pay_time) as firsttime from payment group by account) as t where t.firsttime\u0026gt;="2012-05-01" and t.firsttime\u0026lt;"2012-06-01" 如果有这种需求,而写入速度可以接受,可以增加account上的索引。时间也可以由datetime类型换位整型。另外,对于每个用户,第一次充值的时间不会再改变,将上语句中的嵌套语句结果保存到另一张表是值得的。重复查询的速度会大幅提升,不过就不符合“一条语句”的限定了。 很多时候,高效和一条语句,这两个条件是冲突的。看你怎么选择。把语句少当效率高,应该是玩家的行为。不是工程师的态度啊
■网友
select count(*) from table_a where field_time\u0026gt;=\u0026#39;2012-05-01 00:00:00\u0026#39; and field_time\u0026lt;\u0026#39;2012-06-01 00:00:00\u0026#39; and id not in (select id from table_a where field_time\u0026lt;\u0026#39;2012-05-01 00:00:00\u0026#39;)
■网友
select count(1) cu from(select count(user_id) ct,time from sl_top_up\twhere status = 2 and pay_type IN (5, 9, 27) \tand money \u0026gt; 90group by user_id) ct where ct =1and time between unix_timestamp(\u0026#39;2016-10-01\u0026#39;) and unix_timestamp(\u0026#39;2016-12-31\u0026#39;);
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 创新经营|
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采