在Group BY不工作的日期部分使用MIN,返回不同的日期

时间:2009-06-30 10:16:37

标签: sql sql-server tsql aggregate

任何人都可以帮助使用聚合函数.. MIN。

我有一张车牌,我希望在相同的汽车但不同的年份和价格的tbale上返回最低销售价格和最低年份......

基本上,如果我从组中删除注册(包含一年)并选择查询工作,但如果我留下它然后我得到3辆车返回的是完全相同的型号,制造等但是具有不同的年份.. < / p>

但是我使用MIN所以应该在2006年(3辆车之间的最小年份)返回1辆车

MIN(SalePrice)工作得非常完美..它的注册表没有任何意义..

有什么想法吗?

选择        MIN(datepart(年,[注册]))AS YearRegistered,        MIN(SalePrice),模特,制作 从        [VehicleSales] 通过...分组        datepart(年,[注册]),模型,制作

4 个答案:

答案 0 :(得分:1)

如果我正确理解了您要找的内容,您应该查询:

SELECT Model, Make, MIN(datepart(year,[Registration])) AS YearRegistered, MIN(SalePrice)
FROM [VehicleSales]
GROUP BY Model, Make

希望它有所帮助。

答案 1 :(得分:1)

Turro答案将返回最低注册年份和(型号,品牌)的最低价格,但这并不意味着最低价格将适用于年份最低的汽车。 这是你需要的吗?

或者,你需要其中一个:

  1. 年度最低的汽车之间的最低价格

  2. 价格最低的汽车之间的最低年份

  3. - EDITED ---

      

    你对这个查询是正确的,但我想找到明年会变得更便宜的汽车品牌/型号;)

    这就是我发表评论的原因。想象一下下一个情况

    Porshe 911 2004 2000
    Porshe 911 2004 3000
    Porshe 911 2005 1000
    Porshe 911 2005 5000
    

    你会得到的结果不会真正告诉你这辆车是否会根据年份而变得更便宜。

    Porshe 911 2004 1000
    

    我不知道你怎么会告诉我们明年基于一排的汽车是否比去年更便宜,至少与前一年相比。

    P.S。我想买一辆上面列出的价格:D

答案 2 :(得分:0)

你得到的是你所要求的:每当他们的模型,品牌或年份不同时,汽车被分成不同的组,并且每个组的(最小的,即唯一的)年和最低价格是返回。

为什么使用GROUP BY?

答案 3 :(得分:0)

  

你对这个查询是正确的,但我想找到明年会变得更便宜的汽车品牌/型号;)

您应该每年找到最便宜(或平均)的品牌/型号,并与上一年的最便宜(或平均值)进行比较(对于同一品牌/型号)。

然后你可以看到明年哪些会变得更便宜(我想其中大部分都是这样)