使用mysql查询跟踪api调用

时间:2015-10-24 05:18:51

标签: mysql

我有一个名为api_keys的表,我跟踪api事务。我一直给提供商apiA提供3个api密钥,每个密钥允许最多5000个呼叫。我可以运行单独的查询来获取total number of callsapi keys with < 5000 callsapi keys with 5000 calls。但是,如何将这些查询放入显示consumednot_used百分比的查询中? SQLFIDDLE

所需的输出百分比:

+----------+----------+
| Consumed | Not_used |
+----------+----------+
|       70 |       30 |
+----------+----------+

api通话总数

SELECT COUNT(*) * 5000 as total_api_calls FROM api_keys WHERE `source` = 'apiA';

未达到5000次通话的Api键:

SELECT * FROM api_keys WHERE `source` = 'apiA' and `transactions` < 5000

已达到5000次通话的Api键:

SELECT * FROM api_keys WHERE `source` = 'apiA' and `transactions` >= 5000;

1 个答案:

答案 0 :(得分:1)

两个CASE语句会将每行usednot_used标记设置为1或0。然后你可以SUM将它们除以总行数来得到百分比。

SELECT `source`,
       SUM(CASE WHEN transactions <  5000 THEN 1 ELSE 0 END)/COUNT(*)*100 AS 'Not Used',
       SUM(CASE WHEN transactions >= 5000 THEN 1 ELSE 0 END)/COUNT(*)*100 AS 'Used'
FROM api_keys
WHERE `source` = 'apiA';