SQL分组导致选择

时间:2013-05-06 20:19:19

标签: sql

我的SQL表“offer”包含用户为产品提供的优惠(product_ID,customer_ID,offer)。

在我的管理页面中,我想列出至少存在一个优惠的产品,并显示现有的优惠。

例如,

PRODUCT #324     Total offers: 42
PRODUCT #99      Total offers: 1
etc.

我的猜测是结合一个 SELECT DISTINCT product_ID FROM offers... 在第二个查询中,SELECT COUNT(*) FROM offers WHERE product_ID=...

这是实现这一目标的最有效方法,还是有办法在单个查询中实现?

2 个答案:

答案 0 :(得分:2)

您可以在一个查询中执行此操作,该查询将通过product_id进行分组来获取计数:

SELECT product_ID, COUNT(*) 
FROM offers 
GROUP BY product_ID

答案 1 :(得分:1)

正如bluefeet已经回答的那样,你可以通过使用group by在单个查询中实现它。 (group by demo)

另一件值得一提的是订单,

select
  product_id as id,
  count(*) as totals
from 
  t
group by product_id
order by totals;

如果要对总点击数进行排序,或者如果要按product_id等进行排序。

sqlfiddle