gpt4 book ai didi

sql-server-2008 - 将一个范围分组到一个范围

转载 作者:行者123 更新时间:2023-12-02 02:06:56 26 4
gpt4 key购买 nike

我有一张 table :

tblUnit (ID, Name, PriceFrom, PriceTo)

1, Audi, 170, 340
2, BMW, 250, 290
3, Ford, 275, 500
4, Kia, 110, 250
5, VW, 135, 460

然后我有这样的预定义价格范围:

tblPriceRange(ID, PriceFrom, PriceTo)

1, 0, 100
2, 100, 200
3, 200, 300
4, 300, 400
5, 400, 1000

我正在尝试计算一个或多个价格范围内的车辆数量。宝马仅在 1 个范围内,而奥迪在 3 个范围内,福特在 3 个范围内。

我想要的结果应该是这样的:

VehiclesPerRange:
(RangeFrom, RangeTo, NoVehicles)
0, 100, 0
100, 200, 3
200, 300, 5
300, 400, 3
400, 1000, 2

我已经阅读了本论坛和其他地方的许多关于按范围分组的帖子。但是这些例子都集中在一个单一的价格上,这个价格应该被分组到一个范围内。我知道如何通过连接等来做到这一点,但我不知道如何编写 SQL 来将一个范围分组到一个范围内。

非常感谢任何建议!

最佳答案

您想加入 tblUnittblPriceRange 匹配范围重叠的行。如果第二个范围的开始在第一个结束之前并且第一个范围的开始在第二个结束之前,则两个范围重叠,因此您的连接条件将如下所示:

SELECT *
FROM dbo.tblUnit u
JOIN dbo.tblPriceRange p
ON u.PriceFrom < p.PriceTo
AND p.PriceFrom < u.PriceTo

之后你只需要分组和计数:

SELECT PriceFrom, PriceTo, COUNT(1)
FROM(
SELECT p.PriceFrom, p.PriceTo
FROM dbo.tblUnit u
JOIN dbo.tblPriceRange p
ON u.PriceFrom < p.PriceTo
AND p.PriceFrom < u.PriceTo
)X
GROUP BY PriceFrom, PriceTo;

关于sql-server-2008 - 将一个范围分组到一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com