Revert "каждый гол пишется отдельной строкой"
This reverts commit 50c4755b38.
This commit is contained in:
@@ -333,10 +333,7 @@ WHERE m.match_id = %s;
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def get_vmix_players_goal2(match_id: int):
|
def get_vmix_players_goal(match_id: int):
|
||||||
"""запрос для получения игроков, забивших голы, с указанием минут и типа гола (основной, пенальти, автогол)
|
|
||||||
Иванов 23', 25' (дубли пишуться вместе)
|
|
||||||
"""
|
|
||||||
query = """
|
query = """
|
||||||
WITH goal_events AS (
|
WITH goal_events AS (
|
||||||
SELECT
|
SELECT
|
||||||
@@ -426,96 +423,3 @@ ORDER BY COALESCE(h.rn, a.rn);
|
|||||||
return cur.fetchall()
|
return cur.fetchall()
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def get_vmix_players_goal(match_id: int):
|
|
||||||
"""запрос для получения игроков, забивших голы, с указанием минут и типа гола (основной, пенальти, автогол)
|
|
||||||
Каждый гол в отдельной строке, дубли по игроку не объединяются
|
|
||||||
"""
|
|
||||||
query = """
|
|
||||||
WITH goal_events AS (
|
|
||||||
SELECT
|
|
||||||
meu.side,
|
|
||||||
COALESCE(p.last_name, meu.player_name) AS last_name,
|
|
||||||
meu.seconds,
|
|
||||||
meu.id,
|
|
||||||
meu.type,
|
|
||||||
CASE
|
|
||||||
WHEN EXISTS (
|
|
||||||
SELECT 1
|
|
||||||
FROM match_events_ui m2
|
|
||||||
WHERE m2.match_id = meu.match_id
|
|
||||||
AND m2.type = 'period_start_2h'
|
|
||||||
AND m2.seconds <= meu.seconds
|
|
||||||
) THEN 2
|
|
||||||
WHEN EXISTS (
|
|
||||||
SELECT 1
|
|
||||||
FROM match_events_ui m2
|
|
||||||
WHERE m2.match_id = meu.match_id
|
|
||||||
AND m2.type = 'period_start_1h'
|
|
||||||
AND m2.seconds <= meu.seconds
|
|
||||||
) THEN 1
|
|
||||||
ELSE NULL
|
|
||||||
END AS period_no
|
|
||||||
FROM match_events_ui meu
|
|
||||||
LEFT JOIN players p ON p.id = meu.player_id
|
|
||||||
WHERE meu.match_id = %s
|
|
||||||
AND meu.type IN ('goal', 'penalty', 'own_goal')
|
|
||||||
),
|
|
||||||
goal_rows AS (
|
|
||||||
SELECT
|
|
||||||
side,
|
|
||||||
last_name,
|
|
||||||
seconds,
|
|
||||||
id,
|
|
||||||
last_name || ' ' ||
|
|
||||||
(
|
|
||||||
CASE
|
|
||||||
WHEN period_no = 1 AND seconds > 2700
|
|
||||||
THEN '45''' || '+' || ((seconds - 2700) / 60)::int::text
|
|
||||||
|
|
||||||
WHEN period_no = 2 AND seconds > 5400
|
|
||||||
THEN '90''' || '+' || ((seconds - 5400) / 60)::int::text
|
|
||||||
|
|
||||||
WHEN period_no = 2
|
|
||||||
THEN (46 + ((seconds - 2700) / 60)::int)::text || ''''
|
|
||||||
|
|
||||||
ELSE (1 + (seconds / 60)::int)::text || ''''
|
|
||||||
END
|
|
||||||
) ||
|
|
||||||
CASE
|
|
||||||
WHEN type = 'own_goal' THEN ' (АГ)'
|
|
||||||
WHEN type = 'penalty' THEN ' (П)'
|
|
||||||
ELSE ''
|
|
||||||
END AS player_goal
|
|
||||||
FROM goal_events
|
|
||||||
),
|
|
||||||
home_rows AS (
|
|
||||||
SELECT
|
|
||||||
ROW_NUMBER() OVER (ORDER BY seconds, id, last_name) AS rn,
|
|
||||||
player_goal AS player_name1
|
|
||||||
FROM goal_rows
|
|
||||||
WHERE side = 'home'
|
|
||||||
),
|
|
||||||
away_rows AS (
|
|
||||||
SELECT
|
|
||||||
ROW_NUMBER() OVER (ORDER BY seconds, id, last_name) AS rn,
|
|
||||||
player_goal AS player_name2
|
|
||||||
FROM goal_rows
|
|
||||||
WHERE side = 'away'
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
COALESCE(h.player_name1, '') AS player_name1,
|
|
||||||
COALESCE(a.player_name2, '') AS player_name2
|
|
||||||
FROM home_rows h
|
|
||||||
FULL OUTER JOIN away_rows a ON a.rn = h.rn
|
|
||||||
ORDER BY COALESCE(h.rn, a.rn);
|
|
||||||
"""
|
|
||||||
|
|
||||||
conn = get_connection()
|
|
||||||
try:
|
|
||||||
with conn.cursor() as cur:
|
|
||||||
cur.execute(query, (match_id,))
|
|
||||||
return cur.fetchall()
|
|
||||||
finally:
|
|
||||||
conn.close()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user