当前位置: 首页 > 面试题库 >

我应该如何编写带条件乘法的sql语句?

万俟心思
2023-03-14
问题内容

鉴于我有一个类似以下的表格:

日程

+-------+------------+--------+----------------+-------+---------+
| index | date       | empid  | dept           | sfrom | slength |
+-------+------------+--------+----------------+-------+---------+
|     0 | 09-24-2018 | 943023 | RADIOLOGY      | 03PM  |       8 |
|     1 | 09-24-2018 | 891046 | SURGERY        | 07AM  |       8 |
|     2 | 09-24-2018 | 878397 | RADIOLOGY      | 11PM  |       8 |
|     3 | 09-24-2018 | 886190 | CARDIOLOGY     | 03PM  |       8 |
|     4 | 09-24-2018 | 878397 | RADIOLOGY      | 11PM  |       8 |
|     5 | 09-24-2018 | 891330 | SURGERY        | 03PM  |       8 |
|     6 | 09-24-2018 | 995561 | SURGERY        | 11PM  |       8 |
|     7 | 09-24-2018 | 967577 | MATERNITY      | 03PM  |       8 |
|     8 | 09-24-2018 | 913891 | PEDIATRICS     | 03PM  |       8 |
|     9 | 09-24-2018 | 939148 | EMERGENCY      | 07AM  |       8 |
|    10 | 09-24-2018 | 995636 | RADIOLOGY      | 11PM  |       8 |
|    11 | 09-24-2018 | 995561 | EMERGENCY      | 11PM  |       8 |
|    12 | 09-24-2018 | 967577 | SURGERY        | 07AM  |       8 |
|    13 | 09-24-2018 | 883069 | INTENSIVE CARE | 07AM  |       8 |
|    14 | 09-24-2018 | 951876 | ONCOLOGY       | 03PM  |       8 |
|    15 | 09-24-2018 | 884866 | CARDIOLOGY     | 07AM  |       8 |
|    16 | 09-24-2018 | 864425 | ONCOLOGY       | 03PM  |       8 |

员工表

+-------+--------+------------+-----------+---------+----------------+----------------+------+
| index | empid  | lastName   | firstName | emptype | cellphone      | homephone      | ftpt |
+-------+--------+------------+-----------+---------+----------------+----------------+------+
|     0 | 919675 | Cermak     | Vern      | LPN     | (138)7198-0862 | (655)2249-9926 | FT   |
|     1 | 906704 | Paille     | Lorilee   | NULL    | (858)1100-2722 | (377)1506-1986 | PT   |
|     2 | 900486 | Ober       | Shalanda  | NULL    | (210)1508-8132 | (820)1612-0197 | FT   |
|     3 | 883367 | Clyburn    | Jeffry    | LPN     | (420)7798-7220 | (476)7661-3070 | FT   |
|     4 | 953807 | Quarles    | Timmy     | LPN     | (513)2756-9892

如果我必须计算每个员工类型和每个班次的每个部门的总成本,该如何在sql中执行此操作?

假设如果包括午夜在内,我的工资将乘以25%?

我有以下示例输出,但不知道如何执行此操作?:

+------------+---------------+----------------+---------+
| DEPARTMENT | EMPLOYEE_TYPE |     SHIFT      |  COST   |
+------------+---------------+----------------+---------+
| Anesthesia | LPN           |    7 AM 鈥�3     | $24,567 |
| Anesthesia | LPN           |    3 PM 鈥�11PM  | $18,546 |
| Anesthesia | LPN           |    11 PM 鈥�7AM  | $22,874 |
| Anesthesia | NA            |    7 AM 鈥�3 PM  | $9,764  |
| Anesthesia | NA            |    3 PM 鈥�11 PM | $10,287 |
| Anesthesia | NA            |    11 PM 鈥�7 AM | $6, 875 |
| Anesthesia | RN            |    7 AM 鈥�3 PM  | $33,123 |
+------------+---------------+----------------+---------+

到目前为止,这是我的sql语句:但是,如何使它起作用?编辑1:

 Select 
      t1.dept,
      t2.emptype,
      t1.sfrom,
      t1.slength,
      SUM(t1.slength) as hours 
      CASE WHEN CAST(STR_TO_DATE(sfrom,'%h%p') + 
                     STR_TO_DATE(slength,'%H')) > STR_TO_DATE(23,'%H') 
      then (slength*10*1.25) else (slength*10) end as cost 
 from 
      schedule_2 as t1 
      Join (select 
                empid,
                emptype 
            from 
                employees_2) as t2 ON t1.empid=t2.empid 
 GROUP BY 
       dept,
       emptype,
       slength;

编辑2:

Select 
    t1.dept,
    t2.emptype,
    t1.sfrom,
    t1.slength,
    SUM(t1.slength) as hours
    CASE WHEN HOUR(STR_TO_DATE(sfrom,'%h%p') + 
                   STR_TO_DATE(slength,'%H')) > 23 
    then (slength*10*1.25) else (slength*10) 
from 
    schedule_2 as t1 
    Join (select 
               empid,
               emptype 
          from` 
               employees_2) as t2 ON t1.empid=t2.empid 
 GROUP BY 
      dept,
      emptype,
      slength;

我收到以下错误,但似乎无法找出原因?

您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在’CASE WHEN
HOUR(STR_TO_DATE(sfrom,’%h%p’)+ STR_TO_DATE(slength,’%H’))> 23然后在行附近使用2个


问题答案:

您可以在sql语句中的case子句中使用cost字段。例如:

case when <<your clause for night shift>> then (slength*10)+(0.25*10*slength)
else (slength*10) end as cost

假设它是每小时10 $。您可以根据您的业务规则设置夜班条件。



 类似资料:
  • 问题内容: 所以,这是表格- 在这里,表格只会映射其他两个表格。 我想要显示数据的方式是- 在这里,“厨房”,“洗手间”,“屋顶”,“花园”列的值是发生的事件总数。“百分比”列将显示总计数的百分比。 如何在Oracle SQL中做到这一点? 问题答案: 您需要使用标准的 PIVOT 查询。 根据您的 Oracle数据库版本 ,您可以通过以下两种方式进行操作: 将 PIVOT 用于 11g 及更高

  • 问题内容: 我正在使用MySQL,并且想在SQL中执行一种三元语句,例如: 结果将类似于: 如何做到这一点? 问题答案:

  • 问题内容: 就像我们在C ++中有预处理器指令用于条件包含。 同样,如何在QML中进行条件设置? 问题答案: 根据您要实现的目标,可能的解决方法是使用装载程序。但是它不导入模块,而只是允许动态选择要使用的QML组件。

  • 我有两个矩阵: 乘法应该采取这样的方式,就好像行向量和列向量都是从这两者中提取出来的 这样,对于第一个实例(第一行和第一列),结果将是: 这将垂直求和得到。这个和将给出最终答案。同样,第二行 这个最终标量值将用于比较哪个行及其相应的列具有高产量。

  • 本文向大家介绍jquery if条件语句的写法,包括了jquery if条件语句的写法的使用技巧和注意事项,需要的朋友参考一下 //写个网页用了多门语言,脑袋转不过来亚! //代码: 以上这篇jquery if条件语句的写法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我在Robot Framework中编写条件时遇到麻烦。 我要执行 我可以在一个条件下使用此关键字,但是在多个条件下,出现此错误: 失败:关键字名称不能为空。 我也想使用这些关键字: 和 但是我最终会遇到错误。 问题答案: 您应该使用小写字母“ or”和“ and”,而不是OR和AND。 并且要注意关键字和参数之间的空格/制表符(您至少需要两个空格)。 这是一个代码示例,您的三个关键字