2013-05-06 49 views
0

我的SQL表「offers」包含用戶爲產品提供的優惠(product_ID,customer_ID,offer)。SQL分組導致選擇

在我的管理頁面中,我想列出至少存在一個優惠的產品,並顯示其總優惠。

例如,

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

我的猜測是結合一個 SELECT DISTINCT product_ID FROM offers... 而在第二個查詢,以SELECT COUNT(*) FROM offers WHERE product_ID=...

它是最有效的方式來實現這一目標,還是有如何使它在單個查詢中?

+1

您正在使用哪些DBMS? Postgres的?甲骨文? – 2013-05-06 20:22:48

回答

2

您可以在一個查詢將通過由product_id分組獲取計數做到這一點:

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

另一個問題的答案在標題中是正確的。 :) – Barmar 2013-05-06 20:23:39

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

+1

感謝您的額外信息 – 2013-05-06 21:13:15