获取不大于提供数量的记录

时间:2017-08-02 06:00:35

标签: sql sql-server group-by having

数量作为参数出现,因此我必须仅提取记录RecyclerViewItemDivider divider = new RecyclerViewItemDivider(recyclerView.getContext()); recyclerView.addItemDecoration(divider); 。我在@quantity后尝试的内容不是那么有意义所以下面给出的是我需要实现该条件的查询。我在FROM和使用WHERE但都无法使用

进行了尝试
HAVING

示例数据:

SELECT prod_id,
    product,
    technology,
    price,
    quantity
FROM tbl_product
------SUM(quantity) <= @quantity

如果@quantity = 150,则应提取前3条记录。

3 个答案:

答案 0 :(得分:2)

你需要得到一个累积总和(基于&#34;在你的问题中提取到&#34;),这是使用窗口函数最有效地完成的。

尝试:

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作为订单)。

答案 1 :(得分:0)

假设您想按照累计金额小于prod_id的{​​{1}}排序前N条记录,那么您可以尝试以下查询:

@quantity

答案 2 :(得分:0)

根据产品,您可以找到如下

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)