mirror of
https://github.com/nprasad2077/nbaStats.git
synced 2026-11-05 17:45:48 +00:00
faster route for same query
This commit is contained in:
1 parent
9125fec3e6
commit
f4e3a17e6d
2 files changed
+45
-1
No files matched your search
+2
-1
@@ -1,5 +1,5 @@
|
||||
from django.urls import path
|
||||
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData
|
||||
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast
|
||||
|
||||
urlpatterns = [
|
||||
path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'),
|
||||
@@ -16,4 +16,5 @@ urlpatterns = [
|
||||
path('api/top_rebounds_defensive/<int:season>/', TopDefensiveReboundsBySeasonList.as_view(), name='top_rebounds_DRB'),
|
||||
path('api/points_per_game_histogram/<int:season>/', PointsPerGameHistogramBySeasonList.as_view(), name='points_per_game_histogram'),
|
||||
path('api/top_pts_scatter_plot/', TopPtsScatterPlotData.as_view(), name='top_pts_scatter_plot'),
|
||||
path('api/top_pts_scatter_plot_fast/', TopPtsScatterPlotDataFast.as_view(), name='top_pts_scatter_plot_fast'),
|
||||
]
|
||||
@@ -9,6 +9,7 @@ from rest_framework.response import Response
|
||||
from django.db.models import Avg, Sum, F, FloatField
|
||||
from collections import Counter
|
||||
import math
|
||||
from django.db import connection
|
||||
|
||||
|
||||
# Create your views here.
|
||||
@@ -206,3 +207,45 @@ class TopPtsScatterPlotData(APIView):
|
||||
})
|
||||
|
||||
return Response(data)
|
||||
|
||||
|
||||
class TopPtsScatterPlotDataFast(APIView):
|
||||
def get(self, request):
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("""
|
||||
-- The modified query from earlier
|
||||
WITH player_season_pts AS (
|
||||
SELECT player_name, season, SUM("PTS") as season_pts
|
||||
FROM nba_data_playertotalsdata
|
||||
WHERE player_name IN (SELECT player_name FROM (
|
||||
SELECT player_name, SUM("PTS") as total_pts
|
||||
FROM nba_data_playertotalsdata
|
||||
GROUP BY player_name
|
||||
ORDER BY total_pts DESC
|
||||
LIMIT 25) as top_25_players)
|
||||
GROUP BY player_name, season
|
||||
),
|
||||
player_season_ws AS (
|
||||
SELECT player_name, season, SUM("ws") as season_ws
|
||||
FROM nba_data_playeradvanceddata
|
||||
GROUP BY player_name, season
|
||||
)
|
||||
SELECT player_season_pts.player_name, player_season_pts.season, player_season_pts.season_pts, player_season_ws.season_ws
|
||||
FROM player_season_pts
|
||||
JOIN player_season_ws
|
||||
ON player_season_pts.player_name = player_season_ws.player_name AND player_season_pts.season = player_season_ws.season
|
||||
ORDER BY player_season_pts.player_name, player_season_pts.season;
|
||||
""")
|
||||
rows = cursor.fetchall()
|
||||
|
||||
result = []
|
||||
for row in rows:
|
||||
player_name, season, season_pts, season_ws = row
|
||||
result.append({
|
||||
'player_name': player_name,
|
||||
'season': season,
|
||||
'season_pts': season_pts,
|
||||
'season_ws': season_ws
|
||||
})
|
||||
|
||||
return Response(result)
|
||||
Reference in new issue
Block a user