oracle查询最近7天数据没有展示0
来源:互联网 发布:baocms7.8源码下载 编辑:程序博客网 时间:2024/06/11 22:01
假设现在有两张表order和user
order表
user表
现在需要统计用户“1”在最近7天中每天的订单金额以及数量,如果哪天没有的话,展示0,既是展示下图结果(假设今天是23号)
像这种比较复杂一点的sql,一下子写出完整的sql显然不太好写,需要一点点分析。首先,查询最近7天用户“1”的订单数据,这就话可以分成“最近7天”和“用户1的订单数据”。
sql查询最近7天数据(以年-月-日结果展示)
SELECT to_char (SYSDATE- LEVEL + 1, 'yyyy-mm-dd') today FROM DUAL connect BY LEVEL <= 7
查询结果
查询用户“1”的订单数据
SELECT to_char(o.create_time, 'yyyy-mm-dd') createTime, nvl(SUM(o.price), 0) price, nvl(COUNT(1), 0) count FROM orders o,users u WHERE u.order_no = o.order_no AND u.user_id = '1' GROUP BY to_char (o.create_time, 'yyyy-mm-dd')
查询结果
这句sql需要注意一下group by的使用,group by是结合聚合函数sum(和)、max(最大)、min(最小)、count(数量)、avg(平均)等使用的,然后select查询的字段必须包含在group by后或者聚合函数中作为分组依据,如果没有,sql就会报错。就比如以上sql中to_char(o.create_time, 'yyyy-mm-dd')
就必须出现在group by后作为分组依据,而聚合函数列则不需要
现在就是需要把两个sql关联起来即可,连接两个sql语句有left join、 inner join和right join,使用哪个才可以完成需要的查询呢?这里需要理解三者的却别
left join(左连接) 返回左表中所有记录和右表中连接字段相等的记录
right join(右连接) 和左连接相反
inner join(等值相连、内连接) 只返回两个表中连接字段相等的记录
现在就可以来连接两个sql语句了,以查询“最近7天”为“左表”,使用left join,可以这样写
SELECT days.createTime createTime , nvl (m.price, 0) price, nvl (m.COUNT, 0) count FROM (SELECT to_char (SYSDATE- LEVEL + 1, 'yyyy-mm-dd') createTime FROM DUAL connect BY LEVEL <= 7) days LEFT JOIN (SELECT to_char (o.create_time, 'yyyy-mm-dd') createTime, nvl (SUM(o.price), 0) price, nvl (COUNT(1), 0) count FROM orders o,users u WHERE u.order_no = o.order_no AND u.user_id = '1' GROUP BY to_char (o.create_time, 'yyyy-mm-dd')) m ON days.createTime = m.createTime GROUP BY days.createTime ,m.price, m.count ORDER BY days.createTime
查询结果
0 0
- oracle查询最近7天数据没有展示0
- mysql查询最近7天的数据,没有数据自动补0
- 数据库:取最近30天数据
- 查询Oracle最近插入语句
- mysql查询今天、昨天、7天、近30天数据
- ORACLE查询表最近更改的数据
- ORACLE-查询最近N个月记录
- oracle查询表最近更改的数据
- ORACLE查询表最近更改的数据
- 查询当月天数
- 查询每月的天数
- for循环查询天数
- 月份天数查询器
- oracle中查询没有编译的文件
- Oracle 实现select(查询)的结果集随机顺序展示
- oracle 按天数统计数据
- ORACLE查询表最近更改的数据记录
- oracle 查询最近执行过的 SQL语句
- python3学习笔记:装饰器
- Java基础_变量和运算符
- SQL查询语句优化
- 面向开发者的最佳 Android 库列表
- RESTful API 设计指南
- oracle查询最近7天数据没有展示0
- 学习备忘 3-14
- SpringMVC+Hibernate框架整合
- Shell脚本语言---单引号(‘)和双引号(“)的使用区别
- RestTemplate的多级泛型和消息转换器
- iOS开发技巧之:如何用Xcode导出ipa包
- git及github的使用
- 获取验证码辅助类(基于RxJava框架实现)
- Yuv2Bgr