Compare commits
2 Commits
2df9c97608
...
50c4755b38
| Author | SHA1 | Date | |
|---|---|---|---|
| 50c4755b38 | |||
| 04b1b8796e |
@@ -133,7 +133,7 @@ def parse_team(html: str) -> dict:
|
||||
"lastname": last_name,
|
||||
"player": f"{last_name} {first_name}".strip(),
|
||||
"born": born.get_text(strip=True).replace(",", "") if born else "",
|
||||
"amplua": amplua.get_text(strip=True) if amplua else "",
|
||||
"amplua": amplua.get_text(strip=True).replace(".", "") if amplua else "",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -333,7 +333,10 @@ WHERE m.match_id = %s;
|
||||
conn.close()
|
||||
|
||||
|
||||
def get_vmix_players_goal(match_id: int):
|
||||
def get_vmix_players_goal2(match_id: int):
|
||||
"""запрос для получения игроков, забивших голы, с указанием минут и типа гола (основной, пенальти, автогол)
|
||||
Иванов 23', 25' (дубли пишуться вместе)
|
||||
"""
|
||||
query = """
|
||||
WITH goal_events AS (
|
||||
SELECT
|
||||
@@ -423,3 +426,96 @@ ORDER BY COALESCE(h.rn, a.rn);
|
||||
return cur.fetchall()
|
||||
finally:
|
||||
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