+–+–+–+–+–+
| id | class | name | createdate | points |
+–+–+–+–+–+
| 1 | 一班 | 张三 | 20160229 | 10 |
| 2 | 一班 | 王二 | 20160228 | 9 |
| 3 | 一班 | 李四 | 20160229 | 8 |
| 4 | 二班 | 李四 | 20160229 | 7 |
| 5 | 一班 | 张三 | 20160228 | 6 |
| 6 | 一班 | 张三 | 20160301 | 5 |
+–+–+–+–+–+
表内容如上,本人想要 一班 全部人指定一天(例如:20160229) 积分(points)之和.但是有的人可能在那一天没有数据,就取上次的数据.
这里假如取的话,就应该是
10+9+8
程序里面用,怎么写sql方便一些?
| id | class | name | createdate | points |
+–+–+–+–+–+
| 1 | 一班 | 张三 | 20160229 | 10 |
| 2 | 一班 | 王二 | 20160228 | 9 |
| 3 | 一班 | 李四 | 20160229 | 8 |
| 4 | 二班 | 李四 | 20160229 | 7 |
| 5 | 一班 | 张三 | 20160228 | 6 |
| 6 | 一班 | 张三 | 20160301 | 5 |
+–+–+–+–+–+
表内容如上,本人想要 一班 全部人指定一天(例如:20160229) 积分(points)之和.但是有的人可能在那一天没有数据,就取上次的数据.
这里假如取的话,就应该是
10+9+8
程序里面用,怎么写sql方便一些?
解决方案:88分
SELECT SUM(points) points FROM ( SELECT class , name , createdate , points FROM ( SELECT * FROM tb WHERE class = ""一班"" AND createdate <= ""20160229"" ORDER BY class , name , createdate DESC ) t GROUP BY class , name ) t