MySQL SUM按列中的值

时间:2019-12-17 14:33:00

标签: mysql

我很难获得正确的结果。 我有一张表,其中按日期和用户列出了注册的时间条目。 我还有一个日期表,只包含日期。

CREATE TABLE `jobbile_job_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `note` text,
  `time_type` int(11) DEFAULT NULL,
  `created_by` varchar(255) DEFAULT NULL,
  `created` date DEFAULT NULL,
  `jobbile_job_id` int(11) DEFAULT NULL,
  `inserted` datetime DEFAULT CURRENT_TIMESTAMP,
  `time_registered` decimal(11,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1145 DEFAULT CHARSET=latin1;

SET FOREIGN_KEY_CHECKS = 1;

我想得到一个结果 -日期 -总注册时间 -用户的总时间(已注册)

我使用以下查询:

SELECT
date.date,
SUM(jobbile_job_record.time_registered) as 'total time',
SUM(jobbile_job_record.time_registered AND `jobbile_job_record`.`created_by` = '5713') as 'User 5713',
SUM(jobbile_job_record.time_registered AND `jobbile_job_record`.`created_by` = '5714') as 'User 5714'
FROM
date
LEFT JOIN jobbile_job_record
ON date.date = jobbile_job_record.created
WHERE
date.date BETWEEN '2019-11-01' AND '2019-11-30'
GROUP BY
date.date
ORDER BY
date.date ASC

Total_time可以正常工作,但是没有对经过用户过滤的两个SUM进行汇总,而是进行了计数。 不能使用这种方法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我想您需要在这里提交案例说明-

SELECT
date.date,
SUM(jobbile_job_record.time_registered) as 'total time',
SUM(CASE WHEN `jobbile_job_record`.`created_by` = '5713' THEN jobbile_job_record.time_registered END) as 'User 5713',
SUM(CASE WHEN `jobbile_job_record`.`created_by` = '5714' THEN jobbile_job_record.time_registered END ) as 'User 5714'
FROM date
LEFT JOIN jobbile_job_record ON date.date = jobbile_job_record.created
WHERE date.date BETWEEN '2019-11-01' AND '2019-11-30'
GROUP BY date.date
ORDER BY date.date ASC