Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 如何使用条件乘法编写sql语句?_Mysql_Sql - Fatal编程技术网

Mysql 如何使用条件乘法编写sql语句?

Mysql 如何使用条件乘法编写sql语句?,mysql,sql,Mysql,Sql,假设我有一张如下表: 时间表 +-------+------------+--------+----------------+-------+---------+ | index | date | empid | dept | sfrom | slength | +-------+------------+--------+----------------+-------+---------+ | 0 | 09-24-2018 | 943023 | RA

假设我有一张如下表:

时间表

+-------+------------+--------+----------------+-------+---------+
| 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:

编辑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服务器版本 接近“时长时长”的情况(STR_至_日期(从,%h%p'开始)+ STR_TO_DATE(长度,'%H'))>23,然后在第2行


您可以在sql语句中为成本字段使用case子句。例如:

case when <<your clause for night shift>> then (slength*10)+(0.25*10*slength)
else (slength*10) end as cost
当时的情况(长度*10)+(0.25*10*长度)
其他(长度*10)作为成本结束

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

到目前为止,您是否已设置夜班条件?是的,我正在尝试将两个表连接在一起,然后进行分组,但仍然无法执行。我是sql的新手:/你能不能也包括你的查询?工资或每小时的价格在哪里?我在任何表格上都看不到……您只是在
案例中漏掉了附近的逗号。。当进行查询时,请使您的查询可读。。它将帮助您查找输入错误或丢失。。当然,美观。如果转换时间是字符串列,你能显示整个SQL查询吗?你考虑什么时间午夜?第二,轮班是否每小时开始,如凌晨1点、凌晨2点等?凌晨12点是午夜时间,轮班可以在任何时候开始,但如果在凌晨12点或更晚时间结束,则成本为1.2倍。在总和(t1.slength)后加逗号(,),如下所示:hours@Ryan在顶部查看我的评论并接受我的评论。。当您有可读的查询时,将更容易看到。。
case when <<your clause for night shift>> then (slength*10)+(0.25*10*slength)
else (slength*10) end as cost