mirror of
https://github.com/nprasad2077/nbaStats.git
synced 2026-11-15 14:23:46 +00:00
scatter plot select views
This commit is contained in:
1 parent
47bd481069
commit
6cdd81890a
2 files changed
+97
-2
No files matched your search
+3
-1
@@ -1,5 +1,5 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs
|
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'),
|
path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'),
|
||||||
@@ -23,4 +23,6 @@ urlpatterns = [
|
|||||||
path('api/top_20_post_2009_PTS_ws/', Top20ScorersPost2009WS.as_view(), name='top_20_post_2009_PTS_ws'),
|
path('api/top_20_post_2009_PTS_ws/', Top20ScorersPost2009WS.as_view(), name='top_20_post_2009_PTS_ws'),
|
||||||
path('api/top_20_post_2014_PTS_ws/', Top20ScorersPost2014WS.as_view(), name='top_20_post_2014_PTS_ws'),
|
path('api/top_20_post_2014_PTS_ws/', Top20ScorersPost2014WS.as_view(), name='top_20_post_2014_PTS_ws'),
|
||||||
path('api/top_20_post_2018_PTS_ws/', Top20ScorersPost2018WS.as_view(), name='top_20_post_2018_PTS_ws'),
|
path('api/top_20_post_2018_PTS_ws/', Top20ScorersPost2018WS.as_view(), name='top_20_post_2018_PTS_ws'),
|
||||||
|
path('api/top_25_PTS_ws/playoffs/<int:season>/', Top25ScorersPostSeasonPlayoffs.as_view(), name='top_25_PTS_ws_playoffs'),
|
||||||
|
path('api/top_25_PTS_ws/season/<int:season>/', TopPtsScatterPlotDataFastSelect.as_view(), name='top_25_PTS_ws_season'),
|
||||||
]
|
]
|
||||||
+94
-1
@@ -1,5 +1,5 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse, Http404
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData
|
from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
@@ -298,6 +298,50 @@ class TopPtsScatterPlotDataFast2018(APIView):
|
|||||||
|
|
||||||
return Response(result)
|
return Response(result)
|
||||||
|
|
||||||
|
class TopPtsScatterPlotDataFastSelect(APIView):
|
||||||
|
def get(self, request, season):
|
||||||
|
with connection.cursor() as cursor:
|
||||||
|
cursor.execute("""
|
||||||
|
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
|
||||||
|
WHERE season >= %s
|
||||||
|
GROUP BY player_name
|
||||||
|
ORDER BY total_pts DESC
|
||||||
|
LIMIT 25) as top_25_players)
|
||||||
|
AND season >= %s
|
||||||
|
GROUP BY player_name, season
|
||||||
|
),
|
||||||
|
player_season_ws AS (
|
||||||
|
SELECT player_name, season, SUM("ws") as season_ws
|
||||||
|
FROM nba_data_playeradvanceddata
|
||||||
|
WHERE season >= %s
|
||||||
|
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;
|
||||||
|
""", (season, season, 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Top 20 players in playoffs by PTS X ws for scatter plot in chart.js
|
# Top 20 players in playoffs by PTS X ws for scatter plot in chart.js
|
||||||
|
|
||||||
@@ -431,6 +475,55 @@ class Top20ScorersPost2018WS(APIView):
|
|||||||
|
|
||||||
return Response(result)
|
return Response(result)
|
||||||
|
|
||||||
|
class Top25ScorersPostSeasonPlayoffs(APIView):
|
||||||
|
def get(self, request, season):
|
||||||
|
try:
|
||||||
|
season = int(season)
|
||||||
|
except ValueError:
|
||||||
|
raise Http404("Invalid season format.")
|
||||||
|
|
||||||
|
with connection.cursor() as cursor:
|
||||||
|
cursor.execute("""
|
||||||
|
WITH player_playoff_pts AS (
|
||||||
|
SELECT player_name, season, SUM("PTS") as season_pts
|
||||||
|
FROM nba_data_playerplayofftotalsdata
|
||||||
|
WHERE player_name IN (SELECT player_name FROM (
|
||||||
|
SELECT player_name, SUM("PTS") as total_pts
|
||||||
|
FROM nba_data_playerplayofftotalsdata
|
||||||
|
WHERE season >= %s
|
||||||
|
GROUP BY player_name
|
||||||
|
ORDER BY total_pts DESC
|
||||||
|
LIMIT 25) as top_25_players)
|
||||||
|
AND season >= %s
|
||||||
|
GROUP BY player_name, season
|
||||||
|
),
|
||||||
|
player_playoff_ws AS (
|
||||||
|
SELECT player_name, season, SUM("ws") as season_ws
|
||||||
|
FROM nba_data_playerplayoffadvanceddata
|
||||||
|
WHERE season >= %s
|
||||||
|
GROUP BY player_name, season
|
||||||
|
)
|
||||||
|
SELECT player_playoff_pts.player_name, player_playoff_pts.season, player_playoff_pts.season_pts, player_playoff_ws.season_ws
|
||||||
|
FROM player_playoff_pts
|
||||||
|
JOIN player_playoff_ws
|
||||||
|
ON player_playoff_pts.player_name = player_playoff_ws.player_name AND player_playoff_pts.season = player_playoff_ws.season
|
||||||
|
ORDER BY player_playoff_pts.player_name, player_playoff_pts.season;
|
||||||
|
""", (season, season, 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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TopScorersbySeasonListPlayoffs(generics.ListAPIView):
|
class TopScorersbySeasonListPlayoffs(generics.ListAPIView):
|
||||||
serializer_class = PlayerPlayoffTotalsDataSerializer
|
serializer_class = PlayerPlayoffTotalsDataSerializer
|
||||||
|
|||||||
Reference in new issue
Block a user