获取不大于提供数量的记录
Fetch records that are not greater than provided quantity
数量作为参数出现,因此我只能获取最多 @quantity
的记录。我在 FROM
之后尝试的内容意义不大,因此下面给出了我需要实现该条件的查询。我在 WHERE
和使用 HAVING
中都尝试过,但无法:
SELECT prod_id,
product,
technology,
price,
quantity
FROM tbl_product
------SUM(quantity) <= @quantity
示例数据:
prod_id product technology price quantity
1 M1 ST 25.33 10
2 M2 ST 23.65 50
3 S1 ST 54.32 90
4 S2 PY 21.435 30
5 S3 PY 98.64 110
IF @quantity = 150 那么应该获取前 3 条记录。
您需要获得一个累计总和(基于您问题中的 "fetch up to"),使用 window 函数最有效。
尝试:
with cumulative as (
SELECT prod_id,
product,
technology,
price,
quantity,
sum(quantity) over (order by <order column>) as cumulative_quantity
FROM tbl_product
)
select
prod_id,
product,
technology,
price,
quantity
from cumulative where cumulative_quantity <= @quantity;
您需要提供一个顺序列来指示您希望累积总和使用什么顺序。
所以当@quantity = 150 时,您的结果将是:
prod_id product technology price quantity
1 M1 ST 25.33 10
2 M2 ST 23.65 50
3 S1 ST 54.32 90
(如果您使用 prod_id 作为按列排序)。
假设你想取prod_id
排序的前N条累计和小于@quantity
的记录,那么你可以试试下面的查询:
SELECT
prod_id,
product,
technology,
price,
quantity
FROM tbl_product t1
WHERE (SELECT SUM(t2.quantity) FROM tbl_product t2
WHERE t2.prod_id <= t1.prod_id) < @quantity
根据您可以找到的产品如下
SELECT distinct prod_id,
product,
technology,
price,
FROM tbl_product
where product in (
SELECT product
FROM tbl_product
GROUP BY product
HAVING SUM(quantity) <= @quantity)
数量作为参数出现,因此我只能获取最多 @quantity
的记录。我在 FROM
之后尝试的内容意义不大,因此下面给出了我需要实现该条件的查询。我在 WHERE
和使用 HAVING
中都尝试过,但无法:
SELECT prod_id,
product,
technology,
price,
quantity
FROM tbl_product
------SUM(quantity) <= @quantity
示例数据:
prod_id product technology price quantity
1 M1 ST 25.33 10
2 M2 ST 23.65 50
3 S1 ST 54.32 90
4 S2 PY 21.435 30
5 S3 PY 98.64 110
IF @quantity = 150 那么应该获取前 3 条记录。
您需要获得一个累计总和(基于您问题中的 "fetch up to"),使用 window 函数最有效。
尝试:
with cumulative as (
SELECT prod_id,
product,
technology,
price,
quantity,
sum(quantity) over (order by <order column>) as cumulative_quantity
FROM tbl_product
)
select
prod_id,
product,
technology,
price,
quantity
from cumulative where cumulative_quantity <= @quantity;
您需要提供一个顺序列来指示您希望累积总和使用什么顺序。
所以当@quantity = 150 时,您的结果将是:
prod_id product technology price quantity
1 M1 ST 25.33 10
2 M2 ST 23.65 50
3 S1 ST 54.32 90
(如果您使用 prod_id 作为按列排序)。
假设你想取prod_id
排序的前N条累计和小于@quantity
的记录,那么你可以试试下面的查询:
SELECT
prod_id,
product,
technology,
price,
quantity
FROM tbl_product t1
WHERE (SELECT SUM(t2.quantity) FROM tbl_product t2
WHERE t2.prod_id <= t1.prod_id) < @quantity
根据您可以找到的产品如下
SELECT distinct prod_id,
product,
technology,
price,
FROM tbl_product
where product in (
SELECT product
FROM tbl_product
GROUP BY product
HAVING SUM(quantity) <= @quantity)