2013-05-13 102 views
0

我有一张名为myTable的表。计算答案天mySQL

具有以下字段

ID Date_Done 成功( '是', '否',NULL) TOTAL_COST

我知道我可以通过使用

SELECT Date_Done, COUNT(*) FROM myTable Group By Date_Done; 
得到每天计数

我想要的是一天中成功的“是”人数的计数。

Wh在那个SQL看起来像?

回答

1
SELECT Date_Done, SUM(Successful = 'Yes') 
FROM myTable 
GROUP BY Date_Done 
+0

这比'WHERE Successful ='Yes''好吗? – tadman 2013-05-13 18:35:07

+0

会打开添加'sum(成功='否')'来分割计数的可能性。 – 2013-05-13 18:35:37

+0

谢谢马克。你的回答太快,我无法再接受来自另外8分钟的答案..... – JVMX 2013-05-13 18:36:41

2

直入总和:

SELECT Date_Done, COUNT(*) AS Successful_Count 
    FROM myTable 
    WHERE Successful='Yes' 
    GROUP BY Date_Done 

如果您对Date_Done, Successful这个指数通常是比较快的。

要打破个人状态代码的总和:

SELECT Date_Done, Successful, COUNT(*) AS Type_Count 
    FROM myTable 
    GROUP BY Date_Done, Successful 

再一次在这里的指数将显着提高性能。

+0

'(Successful,Date_Done)'上的索引会更好。 – 2013-05-13 19:11:02

+0

尽管如此,这对'COUNT(*)GROUP BY Date_Done'查询没有帮助。 – tadman 2013-05-13 19:21:04

+0

我想你的意思是从第二个查询中删除WHERE。 – 2013-05-13 19:24:05