求一条SQL语句

兔子侠客 2014-10-31 02:26:43
求一条SQL语句 ,

按销售日期 thetime 进行月 统计

首先 查询出数据库中 thetime 最小的一条 , 并根据这个 min(thetime) 统计数据
当 日期 min(thetime) 为 7月26日 ,统计 26 至 31 日的 数据之和,作为一个月的和值 totalmoney

当 日期 min(thetime) 为6月22日 ,统计 22 至 30日的 数据之和,作为一个月的和值 totalmoney
就是按自然月 进行月统计

求各位大牛帮忙 !在线等!
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子侠客 2014-11-02
  • 打赏
  • 举报
回复
引用 5 楼 bw555 的回复:
每天一条数据?加个group by就行了
SELECT TO_CHAR(thetime,'YYYY-MM-DD'),SUM(MONEY) totalmoney
FROM T
WHERE TO_CHAR(thetime,'YYYYMM')=(SELECT TO_CHAR(MIN(thetime),'YYYYMM') FROM T)
group by TO_CHAR(thetime,'YYYY-MM-DD')
ORDER BY TO_CHAR(thetime,'YYYY-MM-DD')
版主好,发现个问题 ,如果 thetime 中 包含 6月 26 到 8月 27 之间的数据,现在我需要 按月 进行 统计,就是 结果 要分成3个部分 , 6月份的 SUM(MONEY) totalmoney 7月份的 SUM(MONEY) totalmoney 8月份的 SUM(MONEY) totalmoney 分成三份 求 版主帮忙 !
求学的心 2014-11-02
  • 打赏
  • 举报
回复

 select sum(money)  
   from tb t1, (select min(thetime) min_dt from tb group by to_char(thetime,'yyyymm')) t2 
 where t1.thetime between t2.min_dt and last_day(t2.min_dt) ;

bw555 2014-10-31
  • 打赏
  • 举报
回复
每天一条数据?加个group by就行了
SELECT TO_CHAR(thetime,'YYYY-MM-DD'),SUM(MONEY) totalmoney
FROM T
WHERE TO_CHAR(thetime,'YYYYMM')=(SELECT TO_CHAR(MIN(thetime),'YYYYMM') FROM T)
group by TO_CHAR(thetime,'YYYY-MM-DD')
ORDER BY TO_CHAR(thetime,'YYYY-MM-DD')
兔子侠客 2014-10-31
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
[quote=引用 楼主 skyxuyan 的回复:] 求一条SQL语句 , 按销售日期 thetime 进行月 统计 首先 查询出数据库中 thetime 最小的一条 , 并根据这个 min(thetime) 统计数据 当 日期 min(thetime) 为 7月26日 ,统计 26 至 31 日的 数据之和,作为一个月的和值 totalmoney 当 日期 min(thetime) 为6月22日 ,统计 22 至 30日的 数据之和,作为一个月的和值 totalmoney 就是按自然月 进行月统计 求各位大牛帮忙 !在线等!
SELECT SUM(MONEY) totalmoney
FROM T
WHERE TO_CHAR(thetime,'YYYYMM')=(SELECT TO_CHAR(MIN(thetime),'YYYYMM') FROM T)
[/quote] 这个SQL 只能统计一条数据 ,不能统计 26 日至 30 日之和 啊 。。
bw555 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 zlloct 的回复:
[quote=引用 楼主 skyxuyan 的回复:]

select sum(money)
  from tb t1, (select min(thetime) min_dt from tb) t2
 where t1.thetime between t2.min_dt and last_day(t2.min_dt)
[/quote] 如果时间字段带小时分秒的话这么写有点问题,最后一天可能有部分统计不进来
CT_LXL 2014-10-31
  • 打赏
  • 举报
回复
引用 楼主 skyxuyan 的回复:

select sum(money)
  from tb t1, (select min(thetime) min_dt from tb) t2
 where t1.thetime between t2.min_dt and last_day(t2.min_dt)
bw555 2014-10-31
  • 打赏
  • 举报
回复
引用 楼主 skyxuyan 的回复:
求一条SQL语句 , 按销售日期 thetime 进行月 统计 首先 查询出数据库中 thetime 最小的一条 , 并根据这个 min(thetime) 统计数据 当 日期 min(thetime) 为 7月26日 ,统计 26 至 31 日的 数据之和,作为一个月的和值 totalmoney 当 日期 min(thetime) 为6月22日 ,统计 22 至 30日的 数据之和,作为一个月的和值 totalmoney 就是按自然月 进行月统计 求各位大牛帮忙 !在线等!
SELECT SUM(MONEY) totalmoney
FROM T
WHERE TO_CHAR(thetime,'YYYYMM')=(SELECT TO_CHAR(MIN(thetime),'YYYYMM') FROM T)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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