0

我对 SQL 选择感到绝望。我有一张表,它有 4 个参数:id、国家、地址和价格。该表的许多行具有相同的 id,我正在尝试获取每个 id 的价格总和。例如,如果我有下一个数据:

ID  Country  Address  Price
1   France   Address1 1000
1   France   Address2 3332
1   France   Address1 1562
1   France   Address3 1123
1   France   Address2 1123
2   UK       Address8 1234
2   UK       Address7 1233

我想获得下一个结果:

ID  Country  Address  Price
1   France   Address1 SUM(1000, 3332, 1562, 1123, 1123)
2   UK       Address8 SUM(1234, 1233)

我已经尝试了很多查询,但我无法获得该结果。问题是我获得了按国家和地址分组的数据,并且由于地址不同,我获得了多行,例如法国的三个地址。

提前致谢。

对不起我的英语水平。

4

4 回答 4

4

在不知道如何对地址进行排序的情况下,无法分辨出什么被视为第一个地址行。如果按升序排序,则:

SELECT   [ID], Country, MIN(Address), SUM(Price) As TotalPrice
FROM     tblYourTableName
GROUP BY [ID], Country
ORDER BY [ID]

如果不是,那么您将需要实现子查询以按 ID 和国家/地区对地址进行排序。需要了解更多。

于 2013-02-23T11:06:07.567 回答
0

检查它是否有效

SELECT country, SUM(price)
FROM table
GROUP BY country
于 2013-02-23T11:05:21.137 回答
0

答案会根据您的 DBMS 而有所不同。例如:

SELECT   [ID], Country, Address, SUM(Price) As TotalPrice
FROM     tblYourTableName
GROUP BY Country
ORDER BY [ID]

此查询不适用于 Sql Server、Oracle,但适用于 MySql。

于 2013-02-23T11:11:05.390 回答
0

最简单的查询方法是这个

select a.ID, a.Country, a.Address, sum(a.Price) as TotalPrice
from address a
group by a.ID;

但正如另一个人所说,我们需要知道您希望如何对与国家相关的地址进行排序以获得正确的输出。

另一个重要的事情是 DBMS。

顺便说一句,如果你想快速测试它,请检查这个 SQLFiddle http://www.sqlfiddle.com/#!2/61ba6/4

您甚至可以更改 DBMS,这样您就可以 100% 确定查询可以正常工作。

于 2013-02-23T11:13:23.087 回答