2015-08-13 13 views
5

Ho un database con una sola tabella dei reclami e la data in cui sono stati inviati. Quello che devo fare è che, date le date di inizio e fine di due periodi, devo calcolare la percentuale di crescita tra di loro.Calcolo della percentuale di crescita tra due periodi

Ad esempio:

  • Q1 (GEN-MAR) Reclami = 200

  • Q2 (Aprile-giugno) Reclami = 400

Per calcolare la crescita:

  • (Pres ent - Passato)/Passato * percentuale Crescita 100

  • = (400 - 200)/200 * 100 = 100% Crescita

Le informazioni che ho estrarre da quel rapporto che è affermazioni sono cresciuti 100% tra Q1 e Q2

Questo è ciò che mi si avvicinò con:

SELECT 
    (SELECT COUNT(id) FROM complaints WHERE submit_date >= start_date_period_1 AND submit_date <= end_date_period_1) AS q1_claims, 
    (SELECT COUNT(id) FROM complaints WHERE submit_date >= start_date_period_2 AND submit_date <= end_date_period_2) AS q2_claims, 
    (SELECT ((q2_claims - q1_claims)/q2_claims * 100) AS 'Percentage Growth') 
FROM complaints; 

ma non mostra l'output in forma corretta. Mostra un record per ogni data nel periodo indicato. Come posso risolvere la query?

risposta

5

Nella query originale, si stavano miscelando colonne aggregate (ad esempio COUNT) e non aggregate, costringendo MySQL a fornire un set di risultati contenente un record per ogni riga. Prova invece a utilizzare questa query:

SELECT 
    ((q2.claims - q1.claims)/q2.claims * 100) AS 'Percentage Growth' 
FROM 
    (SELECT COUNT(id) AS claims FROM complaints WHERE submit_date >= start_date_period_1 AND submit_date <= end_date_period_1) AS q1, 
    (SELECT COUNT(id) AS claims FROM complaints WHERE submit_date >= start_date_period_2 AND submit_date <= end_date_period_2) AS q2 
+0

Non sapevo che potessi inserire istruzioni SELECT in FROM! E la tua domanda è così accurata. Molte grazie. Accetterò la tua risposta oltre il limite di tempo :) – menawi

+0

Prego :) – Horia

Problemi correlati