2011-04-15 66 views
1

我有以下查询多计数i制成:MySQL的与WHERE

SELECT COUNT(*) AS item_count, 
reseller_id, count(**WHERE sold=1**) as sold_count 
count(**WHERE refunded=1**) as rrefunded 
FROM store GROUP BY 
reseller_id 

出售是1或0和相同退款。

我想检查每个经销商销售多少和退款多少,但我不知道如何在一个查询中执行此操作。

回答

3

如果1或0,你可以做SUM()

SELECT SUM(sold) as sold_count, SUM(refunded) as refund_count FROM store 
+0

这可以工作的伟大 – TDSii 2011-04-15 01:02:59

+1

@TDSii:你应该取消接受我的答案并接受这一个 - 我错过了你的文章中说'出售1或0和退款相同'的部分,因此我的CASE用法是不必要的。我自己给Dmitriy +1。 :) – 2011-04-15 01:10:16

+0

我知道,但你的将在未来得心应手,我在这里学习新的东西,但我错过了这个总和(),但我会改变你的要求最好的答案。感谢两个! – TDSii 2011-04-15 01:31:25

3

试试这个:

SELECT 
    reseller_id, 
    COUNT(*) AS item_count, 
    sum(case sold when 1 then 1 else 0 end) as sold_count, 
    sum(case refunded when 1 then 1 else 0 end) as refunded_count 
FROM store 
GROUP by reseller_id 
+0

正是我一直在寻找 – TDSii 2011-04-15 01:29:39