SQL 实现阶段性统计用于阶段性排行榜

这个功能主要用于月销售排行,周销售排行等。

用到的SQL语句

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

REPLACE [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
示例

$stardate = strtotime(date('Y-m'));
$enddate = TIMESTAMP;
$sql = "REPLACE INTO ".DB::table('common_month_credit')." (`uid`, `extcredits5`, `time`, `dateline`) 
SELECT `cl`.`uid`, SUM(`cl`.`extcredits5`) AS extcredits5, {$this->date}, {$enddate}
FROM ".DB::table('common_credit_log')." `cl` WHERE `cl`.`dateline` BETWEEN {$stardate} AND {$enddate} GROUP BY `uid` LIMIT 0, 500";
DB::query($sql);

上面这段代码来自项目代码片段,目的是统计当月的积分消费情况。用于下一步做月销售排行。

关于INSERT ……SELECT 和REPLACE……SELECT 语句的区别,可以查手册或搜索。

使用INSERT...SELECT,可以快速地从一个或多个表中向一个表中插入多个行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值