sql语句求助 怎么把最后一天的值相加

aCracker 2016-02-29 11:31:52
+----+-------+------+------------+--------+
| 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方便一些?
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2016-03-01
  • 打赏
  • 举报
回复
引用 4 楼 aCracker 的回复:
[quote=引用 1 楼 yupeigu 的回复:]
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
突然发现自己举例举错了,和自己的不一样. 在上面的例子中,我的 class中的值是一样的,实际上,并不一样. +----+-------+------+------------+--------+ | 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)之和.但是有的人可能在那一天没有数据,就取上次的数据. 这样的需求应该怎么弄? 实际中 是 where class like '一年级%' 这样来写的,所以group by class 不行呢.[/quote] 这样应该也没有什么问题。 你要求的是 某个年级中 所有人的成绩总和。
aCracker 2016-03-01
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
select sum(points)
from 表内容如上 t
where createdate<='20160229'
and not exists (select 1 from 表内容如上 where name=t.name and createdate<='20160229' and createdate>t.createdate)

你这个查出来并不正确
aCracker 2016-03-01
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
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

突然发现自己举例举错了,和自己的不一样.
在上面的例子中,我的 class中的值是一样的,实际上,并不一样.
+----+-------+------+------------+--------+
| 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)之和.但是有的人可能在那一天没有数据,就取上次的数据.
这样的需求应该怎么弄?
实际中 是 where class like '一年级%' 这样来写的,所以group by class 不行呢.
aCracker 2016-03-01
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
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

我重新开了个帖子
http://bbs.csdn.net/topics/391909044
求助
ACMAIN_CHM 2016-02-29
  • 打赏
  • 举报
回复
select sum(points) from 表内容如上 t where createdate<='20160229' and not exists (select 1 from 表内容如上 where name=t.name and createdate<='20160229' and createdate>t.createdate)
aCracker 2016-02-29
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
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

请收下我的膝盖
LongRui888 2016-02-29
  • 打赏
  • 举报
回复
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

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧