SQL仅选择第一行

时间:2013-02-23 11:02:02

标签: sql

我对SQL select非常不满意。我有一个表有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 个答案:

答案 0 :(得分:4)

如果不知道如何对地址进行排序,就无法确定什么被视为第一个地址行。如果它按升序排序,则:

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

如果不是,那么你需要实现一个子查询来按ID和&amp ;;来对地址进行排序。国家。需要了解更多。

答案 1 :(得分:0)

检查它是否有效

SELECT country, SUM(price)
FROM table
GROUP BY country

答案 2 :(得分:0)

答案根据您的DBMS而变化。例如:

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

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

答案 3 :(得分: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%确定查询是否有效。