2014-10-30 98 views
1

目前我的表结构是:如何在一个查询中“合并”多个结果? (或总结)

CREATE TABLE `taxes` (
`id` int(8) NOT NULL, 
    `time` datetime NOT NULL, 
    `name` varchar(64) NOT NULL, 
    `amount` decimal(10,2) NOT NULL 
); 

如果我想在一个月我用它来总结所有的税:

SELECT SUM(`amount`) as `taxesThisMonth` FROM `taxes` WHERE `time` > '2014-10-01 00:00:00' 

能正常工作。但是可以总结每个名字的所有税收吗?该名称项可能会在数据库中多发的时间,如:

INSERT INTO `taxes` (`id`, `time`, `name`, `amount`) VALUES 
(1, '2014-10-29 08:59:51', 'Lukas M', '637687.80'), 
(2, '2014-10-29 07:39:50', 'Lukas M.', '430500.15'), 
(3, '2014-10-29 07:14:50', 'Simon F.', '511707.00'), 
(4, '2014-10-29 06:49:49', 'Alex B.', '140982.30'); 

所以,我拿到了3行的结果和卢卡斯M.是“合并”成一个结果?

非常感谢您的帮助!我很久没使用MySQL了。

回答

2

您需要使用group by总结每组数据,因此该查询

SELECT 
name, 
SUM(`amount`) as `taxesThisMonth` 
FROM `taxes` 
WHERE `time` > '2014-10-01 00:00:00' 
group by name 
1

您可以通过名称组:

SELECT name,SUM(`amount`) as `taxesThisMonth` 
FROM `taxes` 
WHERE `time` > '2014-10-01 00:00:00' 
GROUP BY name; 
1

你只需要添加名称字段和一个GROUP BY子句

SELECT SUM(`amount`) as `taxesThisMonth`, 'name' FROM `taxes` WHERE `time` > '2014-10-01 00:00:00' 
GROUP BY 'name' 
相关问题