SQL语句中的分组。

4

好的,我的问题:

我有一个名为itemconfig的表格,其中存储了关于我们仓库中物品的大量数据。我需要选择一个特殊的“组”物品,以便进行与工作相关的测试。到目前为止,我一直在心里默算,当我滚动数据库时,但肯定有更简单的方法。

在itemconfig中,我想具体查看case_qty和pal_qty和itm_num列。我想做的是选择所有itm_num,其中pal_qty / case_qty大于500。这将立即给我提供所有与我的测试相关的itm_num。不幸的是,我不熟悉如何做这个或者是否可能。

谢谢。


如何将此标记为已回答。我猜应该给每个人积分或其他什么的。我通常不使用这个地方。另外,我在问问题后去吃午饭了,所以抱歉回复晚了。 - Daniel Love Jr
3个回答

8

在大多数SQL方言中都实现了除法运算:使用/,如下所示:

select * from table
where  pal_qty / case_qty > 500

假设case_qty是非负数,你可以通过将两边乘以case_qty来避免除以零(并在pal_qty上使用索引,如果有的话*)。
select * from table
where  pal_qty > 500 * case_qty

* 感谢 Vincent Savard 提出的意见。


4
这样做的好处是可以在“pal_qty”列上使用索引。 - Vincent Savard
@VincentSavard 你说得对,这是一个很好的观察,谢谢! - Sergey Kalinichenko

3
这是可能的,使用简单的“WHERE”子句:
SELECT 
  itm_num
FROM itemconfig
WHERE 
  /* Make sure you don't divide by zero */
  case_qty > 0 AND
  pal_qty / case_qty > 500

0

你可以在 WHERE 子句中使用除法。

SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500

如果您的 case_qty 等于零,那么必须确保不会进行除以零的操作。
SELECT itm_num
FROM itemconfig
WHERE (pal_qty/case_qty) > 500
    AND case_qty > 0

请注意,MySQL会毫不犹豫地进行除以零的操作。 - user330315
@a_horse_with_no_name 这真是太悲哀了。 - Taryn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接