我有一个表(基础),表结构是:
id, name, money, manager, date
我是从表中检索不同的值
SELECT DISTINCT name from base;
此代码有效但我需要这样的东西
SELECT DISTINCT name SUM(money) from base;
此代码仅从表中检索一个值(名称)和所有货币值的总和:
像这样id name money manager date
=== ===== ===== ======= ===========
1 John 3000 Scot 10.04.2013
我需要名字DISTINCT和钱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, Delphi sql组件Unidac
抱歉我的英文不好
答案 0 :(得分:5)
GROUP BY
允许您使用SUM
,AVG
,MIN
或MAX
等群组功能:
SELECT name, SUM(money) FROM base GROUP BY name;
答案 1 :(得分:1)
我不确定你想得到什么,我猜这是所有名字Mia的记录的总和。
SELECT (SELECT SUM(money) FROM base WHERE name='Mia') as money, DISTINCT name FROM base WHERE name='Mia'
for mia
并用于普遍使用
SELECT (SELECT SUM(money) FROM base b1 WHERE b1.id=b2.id) as money, DISTINCT name FROM base b2
答案 2 :(得分:0)
正如@KlasLindbäck所说,您可以使用group by
来计算每个名称的总和。
如果您只需要给定名称的总和(让我们说Mia
),您也可以使用此查询:
SELECT 'Mia' as name, SUM(money) from base where name = 'Mia';