2013-05-13 3 views
0

myTable이라는 테이블이 있습니다. 다음 필드로답을 세는 방법 mySQL

ID Date_Done 성공 ('예', NULL, '아니오') 총 비용

내가

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

'성공'= '예'보다 어떻게 좋을까요? – tadman

+0

은 합계를 더하기 위해'sum (successful = 'no')'를 추가 할 가능성이 있습니다. 감사 표시. –

+0

. 당신은 너무 빨리 대답해서 나는 8 분 더 기다려야 대답을 받아 들일 수 있습니다 .......... – JVMX

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) '에 대한 색인이 더 좋을 것입니다. –

+0

그런데 'COUNT (*) GROUP BY Date_Done'쿼리를 사용하면 도움이되지 않습니다. – tadman

+0

그리고 두 번째 쿼리에서'WHERE'를 제거하려고했던 것 같습니다. –

관련 문제