sql语句实现累计数

前言,要实现按某个字段统计,直接用count/sum……group by语句就可以实现,但是要实现累计统计,比如按时间累计统计,从12月3号开始累计数据,比如:4号统计3、4号的数据,5号统计3、4、5号的数据,那么可以有类似如下的语句:

with tab as(SELECT GIVE_DAY,COUNT(DISTINCT MOBILE) NUM FROM(SELECT a.*,to_char(GIVE_TIME,'yyyy-mm-dd') GIVE_DAY from T_SURVEY_USERINFO a) A WHERE A.GIVE_DAY>'2015-12-02'  GROUP BY GIVE_DAY)
 select a.GIVE_DAY,sum(b.NUM) NUM from tab a,tab b where b.GIVE_DAY<=a.GIVE_DAY group by a.GIVE_DAY order by a.GIVE_DAY

其实,上面的sql语句还可以有优化的空间,就是tab部分,可以不用count,仅仅只是转换一下日期格式,然后在后面的select语句中用count进行统计。

转载于:https://www.cnblogs.com/klbc/p/5025669.html

### 关于SC92F8003 单片机 PWM 功能的固件函数库使用 #### 1. 初始化配置 为了使能并初始化SC92F8003单片机中的PWM功能,通常需要先设置相应的控制寄存器。虽然具体细节可能因不同型号而异,但一般流程涉及以下几个方面: - **启用时钟源**:确保为PWM模块提供稳定的时钟信号。 - **设定工作模式**:选择合适的PWM模式(如边沿对齐或中心对齐),这决定了脉冲宽度调制波形的具体形态[^1]。 ```c // 假设这是C语言代码片段用于初始化PWM void Init_PWM(void){ // 启用PWM所需外设时钟 PWC_FuncClockCmd(PWC_CLK_PWM, ENABLE); // 配置PWM通道参数... } ``` #### 2. 设置占空比与频率 通过调整计数器的最大值以及比较匹配值可以改变PWM输出的周期和占空比。对于特定应用场合来说,合理规划这两个参数至关重要。 ```c // 设定PWM频率及占空比 void Set_PWM_DutyCycle(uint16_t frequency, uint8_t duty_cycle_percentage){ // 计算最大计数值(MAX_COUNT),基于期望的PWM频率 uint16_t max_count = SystemCoreClock / (frequency * PRESCALE); // 更新PWM计数器上限值 PWMA_CMRH = high_byte(max_count); PWMA_CMRL = low_byte(max_count); // 根据百分比计算实际比较值(CMP_VALUE) uint16_t cmp_value = max_count * duty_cycle_percentage / 100; // 应用新的比较值到指定通道 PWMA_CMPRn = cmp_value; } ``` 这里`PRESCALE`代表预分频系数;`SystemCoreClock`表示系统核心时钟速率;`PWMA_*`系列变量对应着具体的硬件寄存器地址。 #### 3. 开启/关闭PWM输出 当完成上述准备工作之后,就可以正式开启PWM输出了。同样地,在不需要PWM的时候记得及时将其禁用以节省功耗。 ```c // 控制PWM输出状态 void Control_PWM_Output(bool enable){ if(enable){ // 打开PWM输出 PWMA_CR |= BIT(7); }else{ // 关闭PWM输出 PWMA_CR &= ~BIT(7); } } ``` 以上仅作为基本指导原则展示如何利用固件库操作SC92F8003上的PWM特性。针对更复杂的应用场景,则需深入研究官方提供的技术手册获取更多底层信息和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值