Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于月和的MySQL查询_Mysql_Join - Fatal编程技术网

基于月和的MySQL查询

基于月和的MySQL查询,mysql,join,Mysql,Join,该项目是关于一个系统,在该系统中,根据给定的月份,每X分钟的通话,其设定的费率乘以这些通话,将产生佣金 例如: 1-1000分钟=*0.01,如果1000分钟支付10美元,如果更低,则支付同等金额。 1001-2000分钟=*0.02,如果在2000分钟内支付,则支付20美元。。。 2000+分钟=*0.03,所以如果打2500次电话,佣金是75美元 可以为这样的数学设置查询吗?需要考虑到用户将设置不同的搜索时间范围,例如,从1月1日到3月15日 在一月份,如果它是1500分钟,我将不得不显示一

该项目是关于一个系统,在该系统中,根据给定的月份,每X分钟的通话,其设定的费率乘以这些通话,将产生佣金

例如: 1-1000分钟=*0.01,如果1000分钟支付10美元,如果更低,则支付同等金额。 1001-2000分钟=*0.02,如果在2000分钟内支付,则支付20美元。。。 2000+分钟=*0.03,所以如果打2500次电话,佣金是75美元

可以为这样的数学设置查询吗?需要考虑到用户将设置不同的搜索时间范围,例如,从1月1日到3月15日

在一月份,如果它是1500分钟,我将不得不显示一个每日报告乘以0.02 2月,如果是4000分钟,我会。。。。每0.03 在三月,如果在查询日期前500分钟,我将。。。0.01


它还需要考虑,用户可能会搜索1月1日到15日,即使搜索结果只有500分钟,计算也应该考虑整个月。

如果您使用的是mysql,也许您可以这样做

select 
     mon,
     case
         when total_time <= 1000
              then total_time * 0.01
         when total_time > 1000 
          and total_time <= 2000
              then total_time * 0.02
         when total_time > 2000
              then total_time * 0.03
     end case as pay
from
    (select
         sum(minutes) total_time,
         extract(month from date) mon
     from 
         calls
     group by 
         extract(month from date)
    )

这些是分层的吗?也就是说,你在前1000分钟支付0.01美元,在第二个1000分钟支付0.02美元,等等。或者,这是否意味着如果你有1400分钟,你将为所有1400分钟支付0.02美元。此外,你能提供你的DDL吗?你将为所有1400分钟支付0.02美元。谢谢,表的结构很简单。id |日期|分钟|用户id,谢谢。