[ SQL ] 查询昨天数据以及查询前一个月的数据 借助:DATE_SUB()函数; 借助SQL的GROUP BY子句和聚合函数SUM()来实现 分组汇总数据

1.查询从昨天(包含昨天)往前推一个月的数据

# 举例:查询数据表record内近一个月内出现的数据中都包含哪些编码
select DISTINCT 
    metercode 
from
    record
where 
    curtime >= DATE_SUB(DATE_SUB(CURRENT_DATE, INTERVAL 0 DAY), INTERVAL 1 MONTH) 
AND 
    curtime <= DATE_SUB(CURRENT_DATE, INTERVAL 0 DAY)

# 需求:今天为6月15日,查询5月10日至6月9日之间的数据(包含5月10日,包含6月9日)
select DISTINCT 
    metercode 
from 
    record
where 
    curtime >= DATE_SUB(DATE_SUB(CURRENT_DATE, INTERVAL 5 DAY), INTERVAL 1 MONTH) 
AND 
    curtime <= DATE_SUB(CURRENT_DATE, INTERVAL 5 DAY)
# 说明:今天为15日,要求查9日往前推1个月,所以 INTERVAL 后值为 5,相当于减5天
# 根据自己的需求将 表名, 时间字段做替换即可

2.查询昨天的数据

# 查询昨天的数据,根据字段属性取前5条
select 
    *
from 
    recordday 
where 
    DATE(createtime) = DATE_SUB(CURRENT_DATE, INTERVAL 0 DAY) 
ORDER BY 
    quantity DESC 
LIMIT 5
# 需求:今天6月15日,查询6月11日的数据,排序后取前5条
select 
    usercode, username, useraddress, metercode,quantity,createtime, area1, area2
from 
    recordday 
where 
    DATE(createtime) = DATE_SUB(CURRENT_DATE, INTERVAL 4 DAY) 
ORDER BY 
    quantity DESC 
LIMIT 5
# 说明:查询11日的数据,和今天差4天,所以往前推4天,INTERVAL 后值为4

注意:DATE_SUB(CURDATE(), INTERVAL 4 DAY) 和 时间字段 createtime 比较时未查询到数据,此时需要对 createtime 字段做一下处理。

使用 DATE() 做如下所示处理:

DATE(createtime) = DATE_SUB(CURRENT_DATE, INTERVAL 0 DAY) 

3.查询到多条数据,根据用户分组,汇总每组数据中某一列的数值

# 要按用户ID分组统计用户的用水量,可以使用SQL的GROUP BY子句和聚合函数SUM()来实现。
# 假设表格包含两列:用户ID(user_id)和用水量(water_used),以下是一个示例查询:
SELECT 
    user_id, SUM(water_used) AS total_water_used
FROM 
    record
GROUP BY user_id

在这个查询中,"record"是可替换表格名称,"user_id"是用户ID列的名称,"water_used"是用水量列的名称。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值