如何在MySQL中获取三列的总和?

huangapple go评论102阅读模式
英文:

How to get the sum of the three column in MySQL?

问题

问题是如何将单一输出值作为三个不同列值的总和,这三个列值分别是请假总数、病假总数和其他假期总数。以下是获取这个总和的单一查询示例:

  1. SELECT
  2. SUM(casual_leave_days) AS casual_leave,
  3. SUM(vaction_leave_days) AS vaction_leave,
  4. SUM(other_leave_days) AS other_leave
  5. FROM leaveapplydata
  6. WHERE emp_id = '".$_POST["emp_id"]."' AND
  7. (casual_holiday_start LIKE '".$passyear."%' OR
  8. vaction_holiday_start LIKE '".$passyear."%' OR
  9. other_holiday_start LIKE '".$passyear."%');

这个查询将返回在指定年份($passyear)中的员工的请假总数、病假总数和其他假期总数。请注意,你需要将 $_POST["emp_id"] 替换为你的实际变量值,以匹配特定员工的ID。

英文:

My problem is how to get the single output value as three different column value sum as total sum of the all the column

leave count of casual leave

  1. SELECT SUM(casual_leave_days) AS casual_leave
  2. FROM leaveapplydata
  3. WHERE emp_id = '".$_POST["emp_id"]."' AND casual_holiday_start
  4. LIKE '$passyear%'

leave count of vaction leave

  1. SELECT SUM(vaction_leave_days) AS vaction_leave
  2. FROM leaveapplydata
  3. WHERE emp_id = '".$_POST["emp_id"]."' AND vaction_holiday_start
  4. LIKE '$passyear%'

leave count of other leave

  1. SELECT SUM(other_leave_days) AS other_leave
  2. FROM leaveapplydata
  3. WHERE emp_id = '".$_POST["emp_id"]."' AND other_holiday_start
  4. LIKE '$passyear%'

now i want get total holiday count in pass year using single query.how do i do it?
table structure

  1. tbl_id emp_id casual_leave_days casual_holiday_start casual_holiday_end vaction_leave_days vaction_holiday_start vaction_holiday_end other_leave_days other_holiday_start other_holiday_end leave_reason applicant_sign actor_sign supervior_sign head_sign
  2. 1 23 9 2019-12-23 2019-12-27 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Private 1 1 1 1
  3. 2 23 2 2019-12-24 2019-12-26 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Private 1 1 1 1
  4. 3 23 0 0000-00-00 0000-00-00 2 2019-12-28 2019-12-30 0 0000-00-00 0000-00-00 Sickness 1 1 1 1
  5. 4 23 1 2019-12-29 2019-12-30 1 2019-12-30 2019-12-31 0 0000-00-00 0000-00-00 Private 1 1 1 1
  6. 5 25 1 2019-12-30 2019-12-31 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Other 1 1 1 1
  7. 6 30 1 2020-01-01 2020-01-02 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Private 1 1 1 1
  8. 7 30 5 2019-11-04 2019-11-11 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Private 1 1 1 1
  9. 8 23 1 2020-01-02 2020-01-03 0 0000-00-00 0000-00-00 0 0000-00-00 0000-00-00 Sickness 1 1 1 1

答案1

得分: 1

Summing is commutative, so you could add the three fields and then sum them:

  1. SELECT SUM(casual_leave_days + vacation_leave_days + other_leave_days) AS total_leave
  2. FROM leaveapplydata
  3. -- WHERE some condition
英文:

Summing is commutative, so you could add the three fields and then sum them:

  1. SELECT SUM(casual_leave_days + vacation_leave_days + other_leave_days) AS total_leave
  2. FROM leaveapplydata
  3. -- WHERE some condition

答案2

得分: 0

你可以这样做,

SELECT (casual_leave + vaction_leave + other_leave_days) AS total_leave
FROM (
SELECT SUM(casual_leave_days) AS casual_leave,
SUM(vaction_leave_days) AS vaction_leave,
SUM(other_leave_days) AS other_leave
FROM leaveapplydata
WHERE emp_id = '$_POST["emp_id"]' AND (casual_holiday_start LIKE '$passyear%'
OR vaction_holiday_start LIKE '$passyear%'
OR other_holiday_start ))

英文:

You can do it like this ,

  1. SELECT (casual_leave + vaction_leave + other_leave_days ) AS total_leave
  2. FROM (
  3. SELECT SUM(casual_leave_days) AS casual_leave ,
  4. SUM(vaction_leave_days) AS vaction_leave ,
  5. SUM(other_leave_days) AS other_leave
  6. FROM leaveapplydata
  7. WHERE emp_id = '".$_POST["emp_id"]."' AND (casual_holiday_start LIKE '$passyear%'
  8. OR vaction_holiday_start LIKE '$passyear%'
  9. OR other_holiday_start ) )

huangapple
  • 本文由 发表于 2020年1月6日 15:10:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/59608011.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定