2016-05-31 8 views
0

ich eine SQL-Abfrage schreiben wollen zählen, die jede Komponente zu, wie zwei Bedingungen auf der gleichen Gruppe

1) mit dem Namen beginnend mit ‚MyTeam‘

2) vom Typ „Bug“ zeigen

3) Wie viele Bugs wurden diesen Monat geöffnet und wie viele wurden danach von dieser Gruppe verifiziert?

Hier ist mein Code:

select 
histories.component_path, 
count distinct bug_id as id1 from buganizer.metadata.latest WHERE (histories.component_path LIKE 'myTeam >%' And type_id = 'BUG' And (date - Now() < 30)) as total_bugs, 
count distinct bug_id as id2 from buganizer.metadata.latest WHERE (histories.component_path LIKE 'myTeam >%' And type_id = 'BUG' And status_id = 'VERIFIED') as verified_bugs 

wie kann ich diese kurzgeschlossen und gut formatiert machen?

+2

Sie sollten wirklich zusammen mit einigen Beispieldaten zeigen uns Strukturtabelle. –

+0

Wenn das funktioniert dann ist es nicht MySQL – Strawberry

+0

@Strawberry Ich glaube nicht, dass dieser Code funktioniert .. ist nicht SQL .. zu – scaisEdge

Antwort

0

Ich habe Ihre Abfrage wie folgt geändert. COUNT berücksichtigt die NULL-Werte nicht. Könnten Sie die Abfrage versuchen (es ist nicht überprüft)

SELECT A.component_path, 
     COUNT(DISTINCT A.id1) AS total_bugs, 
     COUNT(DISTINCT A.id2) AS verified_bugs 
FROM (
    SELECT 
     histories.component_path AS component_path, 
     CASE WHEN (DATE - NOW() < 30) THEN bug_id ELSE NULL END AS id1, 
     CASE WHEN status_id = 'VERIFIED' THEN bug_id ELSE NULL END AS id2 
    FROM buganizer.metadata.latest 
    -- need to add some join with "histories" table 
    WHERE histories.component_path LIKE 'myTeam%' AND type_id = 'BUG' 
) AS A 
GROUP BY A.component_path 
Verwandte Themen