MySQL 检查值是否在从子查询派生的值范围内
MySQL Check if a value is within the range of values derived from a subquery
我需要查询方面的帮助,我有一个 table,这是一个示例
Item Code Qty Price Supplier
1234 1 20 A
1234 3 15 B
1234 6 2 C
4321 2 8 D
4321 7 1 A
4321 9 5 G
5432 8 10 E
5432 3 2 F
5467 5 9 H
5467 5 7 K
我有一个子查询,其中包含不同的商品代码、max(price) 和 max(price) 的 75%,这就是结果。
Item Code Max value Min Value
1234 20 15
4321 8 6
5432 10 7.5
5467 9 6.75
如果价格在特定项目代码的第二个 table 范围内,我只需要从第一个 table 中提取那些行。有人可以帮忙吗?
你可以试试这个:
SELECT
a.*
FROM items a
JOIN (
SELECT
item_code,
MAX(Price) as Max_Value,
MAX(Price) * 0.75 as Min_Value
FROM items
GROUP BY item_code) b
ON a.item_code = b.item_code
WHERE a.price between b.Min_Value AND b.Max_Value
order by a.item_code, a.price ASC
我将首先获得每个 itemCode 的最高价格,然后使用 itemCode 加入主要 table 并确认价格在每件商品的最高价格和最高价格的 75% 之间。
Select tbl.*
From myTable tbl
Join (
Select item_code,
max(price) as mx,
Round(max(price)*.75,0) as mx75
From myTable
Group by item_code) tab
On tbl.item_code = tab.item_code
And tbl.price between tab.mx75 and tab.mx
Order by 1, 4
我需要查询方面的帮助,我有一个 table,这是一个示例
Item Code Qty Price Supplier
1234 1 20 A
1234 3 15 B
1234 6 2 C
4321 2 8 D
4321 7 1 A
4321 9 5 G
5432 8 10 E
5432 3 2 F
5467 5 9 H
5467 5 7 K
我有一个子查询,其中包含不同的商品代码、max(price) 和 max(price) 的 75%,这就是结果。
Item Code Max value Min Value
1234 20 15
4321 8 6
5432 10 7.5
5467 9 6.75
如果价格在特定项目代码的第二个 table 范围内,我只需要从第一个 table 中提取那些行。有人可以帮忙吗?
你可以试试这个:
SELECT
a.*
FROM items a
JOIN (
SELECT
item_code,
MAX(Price) as Max_Value,
MAX(Price) * 0.75 as Min_Value
FROM items
GROUP BY item_code) b
ON a.item_code = b.item_code
WHERE a.price between b.Min_Value AND b.Max_Value
order by a.item_code, a.price ASC
我将首先获得每个 itemCode 的最高价格,然后使用 itemCode 加入主要 table 并确认价格在每件商品的最高价格和最高价格的 75% 之间。
Select tbl.*
From myTable tbl
Join (
Select item_code,
max(price) as mx,
Round(max(price)*.75,0) as mx75
From myTable
Group by item_code) tab
On tbl.item_code = tab.item_code
And tbl.price between tab.mx75 and tab.mx
Order by 1, 4