我有一个表(base)和一个表的结构是:
id, name, money, manager, date
i do从表中检索不同的值
SELECT DISTINCT name from base;
这段代码可以工作,但是我需要这样的东西
SELECT DISTINCT name SUM(money) from base;
这段代码只从一个表中检索一个值(name)和所有money值的总和:
这样的id name money manager date
=== ===== ===== ======= ===========
1 John 3000 Scot 10.04.2013
我需要名字,DISTINCT和money SUM
id name money manager date
=== ===== ===== ======= ===========
1 John 150 Scot 10.04.2013
2 Mia 200 Scot 11.04.2013
3 Monica 650 Scot 09.04.2013
... ...... ... .... ..........
如果我添加这样的SQL查询:
SELECT DISTINCT name, SUM(money) FROM base WHERE name='Mia'
或
SELECT name, SUM(money) FROM base WHERE name='Mia'
代码能够工作。如何在表中的所有记录上这样做?
我用:
Mysql 5.5.24,Delphi Xe3,sql组件
对不起,我的英语不好
GROUP BY
将允许您使用SUM
, AVG
, MIN
或MAX
等组函数:
SELECT name, SUM(money) FROM base GROUP BY name;
我不知道你想要什么,我猜是所有名字为Mia的记录的一些钱。
SELECT (SELECT SUM(money) FROM base WHERE name='Mia') as money, DISTINCT name FROM base WHERE name='Mia'
米娅的和通用的
SELECT (SELECT SUM(money) FROM base b1 WHERE b1.id=b2.id) as money, DISTINCT name FROM base b2
正如@Klas Lindbäck所说,您可以使用group by
来计算每个名称的总和。如果只需要给定名称的和(比如Mia
),还可以使用以下查询:
SELECT 'Mia' as name, SUM(money) from base where name = 'Mia';