这是测试表
----------------------------------------------
id | username | point | level | created_date
----------------------------------------------
1 | name_a | 1 | 1 | 2011-08-01
2 | name_a | 2 | 2 | 2011-08-02
3 | name_b | 5 | 1 | 2011-08-02
3 | name_c | 6 | 1 | 2011-08-02
4 | name_d | 1 | 1 | 2011-08-01
5 | name_d | 3 | 1 | 2011-08-02
5 | name_d | 5 | 2 | 2011-08-03
4 | name_e | 5 | 1 | 2011-08-01
5 | name_e | 5 | 2 | 2011-08-02
5 | name_e | 5 | 3 | 2011-08-03
----------------------------------------------
Run Code Online (Sandbox Code Playgroud)
查询的要求是查询(尽可能在一个查询中)用户名,表的点.
输出样本:
--------------------
username | tpoint|
--------------------
name_d | 8 |
name_b | 5 |
name_a | 3 |
--------------------
Run Code Online (Sandbox Code Playgroud)
name_e而name_c被忽略.
听起来很有趣!
SELECT username, SUM(point) AS points
FROM (SELECT username, level, point
FROM (SELECT username, level, LEAST(point, 5) AS point
FROM table
WHERE points <= 5
ORDER BY created_date DESC) AS h
GROUP BY username, level) AS h2
GROUP BY username
HAVING points < 10
ORDER BY points DESC
Run Code Online (Sandbox Code Playgroud)
这应该做到!只需替换"表".
编辑:
是否要排除得分超过5或值为5的行?如果是这样,只需删除WHERE点<= 5.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |