我在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
答案 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