如何"合并"多个结果在一个查询中? (或总结)

时间:2014-10-30 14:37:37

标签: mysql

目前我的表结构是:

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'

这很好用。但有可能总结每个名字的所有税收吗? Name条目可以在数据库中多次出现,如:

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行而Lukas M.被“合并”成一个结果?

非常感谢你的帮助!我很长时间没有使用MySQL。

3 个答案:

答案 0 :(得分:2)

您需要使用group by来汇总每个组的数据,因此查询变为

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

答案 1 :(得分:1)

您可以按名称分组:

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

答案 2 :(得分:1)

您只需添加名称字段和GROUP BY子句

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