Mysql - 如何获得每季度在特定范围内获得积分的独特用户?

时间:2016-03-04 09:56:33

标签: mysql

我在mysql表下面

tbl_user_points

id  userid  points  add_date
1   1       10      2015-01-20
2   2       20      2015-11-13
3   3       30      2015-02-24
4   4       40      2015-07-21
5   1       50      2015-01-10
6   6       60      2015-12-01
7   7       70      2015-07-06
8   8       80      2015-06-14
9   9       90      2015-04-10
10  1       100     2015-09-08
11  3       110     2015-01-07

我想获取每季度获得以下范围积分的唯一身份用户:

Under 100 PTS
100-249 PTS
250-499 PTS
500-999 PTS
OVER 1000 PTS

注:

Quarter 1 - 01-01-2015 to 31-01-2015
Quarter 2 - 01-04-2015 to 30-06-2015
Quarter 3 - 01-07-2015 to 30-09-2015
Quarter 4 - 01-10-2015 to 31-12-2015

我想通过以下查询获得结果:

SELECT DISTINCT( user_id ) AS totalUserCnt FROM tbl_user_points WHERE  db_add_date >=  '2015-01-01' AND db_add_date <= '2015-03-31' HAVING SUM(points) < 100

2 个答案:

答案 0 :(得分:1)

这应该这样做:

SELECT user_id, SUM(points) FROM tbl_user_points WHERE db_add_date >= '2015-01-01' AND db_add_date <= '2015-03-31' GROUP BY user_id HAVING SUM(points) > 0 AND SUM(points) < 100

根据需要更改值。

答案 1 :(得分:0)

我不确定我是否理解了您的问题,但为了获得每个季度的问题,您必须添加QUARTER()功能:

SELECT DISTINCT( user_id ) AS totalUserCnt FROM tbl_user_points
  WHERE  db_add_date >=  '2015-01-01' AND db_add_date <= '2015-12-31' 
  GROUP BY QUARTER(add_date)
  HAVING SUM(points) < 100