目前我的表结构是:
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。
答案 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'