Je dois compter l'appel répondu dans certaines plages 0 à 10 sec, 0 à 20 sec, etc. Le nombre augmentera tandis que le delta sera le compte différent entre le courant et le prochain. Le% sera le nombre actuel/le total final.MySQL - Compter l'appel répondu dans certaines plages 0 à 10 sec, grouper par compte
Voici le sqlfiddle que vous pouvez utiliser avec des données pour les tests: http://sqlfiddle.com/#!9/803d2/2
table Exemple de callsdetails:
+-----+----------------+----------+----------+---------------+
| id | callid | callerno | duration | status |
+-----+----------------+----------+----------+---------------+
| 634 | 1479097551.228 | 1000 | 2 | complete |
| 635 | 1479102518.248 | 1000 | 12 | complete |
+-----+----------------+----------+----------+---------------+
Résultat attendu:
+------------------------+----------+----------+----------+
| Ranges | Count | Delta | % |
+------------------------+----------+----------+----------+
| Between 0 to 10 secs | 44 | +44 | 84.62 % |
| Between 0 to 20 secs | 48 | +4 | 92.31 % |
| Between 0 to 30 secs | 50 | +2 | 96.15 % |
| Between 0 to 40 secs | 51 | +1 | 98.08 % |
| Between 0 to 50 secs | 51 | +0 | 98.08 % |
| Between 0 to 60 secs | 51 | +0 | 98.08 % |
| Between 0 to 70 secs | 51 | +0 | 98.08 % |
| Between 0 to 80 secs | 52 | +1 | 100.00 % |
| Between 0 to 90 secs | 52 | +0 | 100.00 % |
| Between 0 to 100+ secs | 52 | +0 | 100.00 % |
+------------------------+----------+----------+----------+
Total 52
Ce que je suis en mesure de créer maintenant est ci-dessous la requête, si vous pouvez aider à fournir une meilleure solution, s'il vous plaît des conseils. Le problème auquel je fais face maintenant est (priorité) je ne suis pas capable d'obtenir le compte et (secondaire) le total final compte (52) pour le%, maintenant je mets manuellement dans le total final compte (52). S'il vous plaît aider.
SELECT Ranges,Delta,ROUND(Delta/52*100,2) AS '%'
FROM
(
SELECT
(
IF(duration<=10,'10',IF(duration<=20,'20',IF(duration<=30,'30',
IF(duration<=40,'40',IF(duration<=50,'50',
IF(duration<=60,'60',IF(duration<=70,'70',IF(duration<=80,
'80',IF(duration<=90,'90','100+'))))))))))
AS Ranges,COUNT(duration) AS Delta
FROM callsdetails
GROUP BY Ranges
) a
GROUP BY Ranges;
Résultat actuel:
+--------+-------+-------+
| Ranges | Delta | % |
+--------+-------+-------+
| 10 | 44 | 84.62 |
| 20 | 4 | 7.69 |
| 30 | 2 | 3.85 |
| 40 | 1 | 1.92 |
| 80 | 1 | 1.92 |
+--------+-------+-------+
================================= ==========================================
Merci à Etsa pour m'aider à résoudre problème ci-dessus qui est le total de tous les appels, je pourrais avoir besoin d'aide à nouveau maintenant avec l'ajout de grouper par nom de file d'attente. C'est la même formule avec ci-dessus mais maintenant il doit être divisé ou groupe par nom de file d'attente.
Voici le sqlfiddle que vous pouvez utiliser avec des données pour les tests: http://sqlfiddle.com/#!9/efe11b/2
Résultat attendu:
+---------+------+-----------+-------+--------+
| QUEUE | RAN | TOT_COUNT | DELTA | % |
+---------+------+-----------+-------+--------+
| sales | 10 | 6 | 6 | 100.00 |
| sales | 20 | 6 | 0 | 100.00 |
| sales | 30 | 6 | 0 | 100.00 |
| sales | 40 | 6 | 0 | 100.00 |
| sales | 50 | 6 | 0 | 100.00 |
| sales | 60 | 6 | 0 | 100.00 |
| sales | 70 | 6 | 0 | 100.00 |
| sales | 80 | 6 | 0 | 100.00 |
| sales | 90 | 6 | 0 | 100.00 |
| sales | 100+ | 6 | 0 | 100.00 |
| enquiry | 10 | 32 | 32 | 80.00 |
| enquiry | 20 | 36 | 4 | 90.00 |
| enquiry | 30 | 38 | 2 | 95.00 |
| enquiry | 40 | 39 | 1 | 97.50 |
| enquiry | 50 | 39 | 0 | 97.50 |
| enquiry | 60 | 39 | 0 | 97.50 |
| enquiry | 70 | 39 | 0 | 97.50 |
| enquiry | 80 | 40 | 1 | 100.00 |
| enquiry | 90 | 40 | 0 | 100.00 |
| enquiry | 100+ | 40 | 0 | 100.00 |
| others | 10 | 6 | 6 | 100.00 |
| others | 20 | 6 | 0 | 100.00 |
| others | 30 | 6 | 0 | 100.00 |
| others | 40 | 6 | 0 | 100.00 |
| others | 50 | 6 | 0 | 100.00 |
| others | 60 | 6 | 0 | 100.00 |
| others | 70 | 6 | 0 | 100.00 |
| others | 80 | 6 | 0 | 100.00 |
| other | 90 | 6 | 0 | 100.00 |
| others | 100+ | 6 | 0 | 100.00 |
+---------+------+-----------+-------+--------+
Avez-vous essayé quelque chose? SO n'est pas un service de logiciel libre. Essayez de faire un effort, affichez-le dans votre question et demandez de l'aide. De plus, je suggère de créer une nouvelle question. – etsa
Salut Etsa, je suis vraiment désolé de faire croire que je profite de vous. J'ai essayé plusieurs fois de modifier votre code, mais plus j'essaie, plus le résultat affiché est faux. Je suis vraiment désolé de vous déranger car je ne suis pas familier avec cela et j'espère avoir de l'aide de votre part. Je suis vraiment désolé et merci pour votre aide. – DarkSilver