2016-03-30 3 views
1

мне нужна помощь подсчета строк из приведенного ниже примераMySQL подсчет повторяющихся строк в качестве одного из

ProjectID ScriptID Browser Status 
ABC  5001  Chrome Pass 
ABC  5002  FireFox Fail 
ABC  5003  Chrome Pass 
ABC  5003  FireFox Pass 
ABC  5004  Chrome Pass 
ABC  5004  FireFox Fail 
ABC  5005  Chrome Fail 
ABC  5005  FireFox Fail 

Я хочу, чтобы результат как:

ProjectID Pass Fail 
ABC  2 3 

Я пробовал следующий запрос, но это не получает желаемый результат:

SELECT projectID, 
     SUM(CASE WHEN Status = '1' THEN 1 ELSE 0 END) AS Pass, 
     SUM(CASE WHEN Status = '2' THEN 1 ELSE 0 END) AS Fail 
FROM Results 
GROUP BY ScriptID 

Короче говоря, считайте скрипт как Pass, если он прошел во всех браузерах, посчитайте его как Fail i f он потерпел неудачу в одном или всех браузерах. Включить Pass или Fail count для запуска скриптов только в одном браузере. Скрипты могут выполняться в более чем двух браузерах. Пожалуйста помогите.

+2

Вы написали код для этого еще? Stack Overflow не является службой записи кода. – Oisin

+0

Вы можете группировать 'ScriptID'; – itzmukeshy7

+0

У меня есть следующий запрос, который не получает желаемого результата. ВЫБОР ProjectID, SUM (CASE , когда статус = '1', то 1 ИНАЧЕ 0 КОНЕЦ) КАК Pass, SUM (CASE , когда статус = '2' ТОГДА 1 ИНАЧЕ 0 END) как аварийные FROM Результаты GROUP BY ScriptID – Sohrab

ответ

0

Ну, ваш запрос был хорошим началом. Вам нужен подзапрос, в котором вы группируете идентификатор проекта и идентификатор сценария и определяете, соответствует ли nemuber пропусков количеству записей в этой группе (pass), или у вас есть хотя бы один сбой (сбой). Затем во внешнем запросе вы группируете только по идентификатору проекта и суммируете результаты в вычисленных полях прохода и отказа:

SELECT ProjectID, sum(Pass), sum(Fail) 
FROM 
    (SELECT ProjectID, 
      ScriptID, 
      IF(SUM(CASE WHEN Status = 'Pass' THEN 1 ELSE 0 END) = COUNT(*),1,0) AS Pass, 
      IF(SUM(CASE WHEN Status = 'Fail' THEN 1 ELSE 0 END) > 0,1,0) AS Fail 
    FROM Results 
    GROUP BY ProjectID, ScriptID) t 
GROUP BY ProjectID 
Смежные вопросы