diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index ac9cb56cc..68125a047 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -5792,35 +5792,28 @@ async def global_spend_end_users(data: Optional[GlobalEndUsersSpend] = None): if prisma_client is None: raise HTTPException(status_code=500, detail={"error": "No db connected"}) - if data is None: - sql_query = f"""SELECT * FROM "Last30dTopEndUsersSpend";""" + """ + Gets the top 100 end-users for a given api key + """ + startTime = datetime.now() - timedelta(days=30) + endTime = datetime.now() - response = await prisma_client.db.query_raw(query=sql_query) - else: - """ - Gets the top 100 end-users for a given api key - """ - current_date = datetime.now() - past_date = current_date - timedelta(days=30) - response = await prisma_client.db.litellm_spendlogs.group_by( # type: ignore - by=["end_user"], - where={ - "AND": [{"startTime": {"gte": past_date}}, {"api_key": data.api_key}] # type: ignore - }, - sum={"spend": True}, - order={"_sum": {"spend": "desc"}}, # type: ignore - take=100, - count=True, - ) - if response is not None and isinstance(response, list): - new_response = [] - for r in response: - new_r = r - new_r["total_spend"] = r["_sum"]["spend"] - new_r["total_count"] = r["_count"]["_all"] - new_r.pop("_sum") - new_r.pop("_count") - new_response.append(new_r) + sql_query = """ +SELECT + end_user, + COUNT(*) AS total_count, + SUM(spend) AS total_spend +FROM + "LiteLLM_SpendLogs" +GROUP BY + end_user +WHERE + "startTime" >= $1 AND "startTime" < $2 +ORDER BY + total_spend DESC +LIMIT 100 + """ + response = await prisma_client.db.query_raw(sql_query, startTime, endTime) return response