Moduł:StatystykiHistoryczne: Różnice pomiędzy wersjami
Wygląd
Utworzono nową stronę "local p = {} -- ========================================================= -- MODUŁ: STATYSTYKIHISTORYCZNE -- -- Łączne statystyki wszystkich zawodników Enea Basket Poznań -- ze wszystkich sezonów znajdujących się w Cargo. -- -- Rankingi: -- MECZE -- PUNKTY -- MINUTY -- ASYSTY -- ZBIÓRKI -- BLOKI -- -- Dane: -- UdzialZawodnika -- -- Uwzględniani są WYŁĄCZNIE zawodnicy, -- dla których: -- -- druzyna = "Enea Basket Poznań" -- -- =======…" |
Nie podano opisu zmian |
||
| (Nie pokazano 9 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 4: | Linia 4: | ||
-- MODUŁ: STATYSTYKIHISTORYCZNE | -- MODUŁ: STATYSTYKIHISTORYCZNE | ||
-- | -- | ||
-- Łączne statystyki wszystkich | -- Łączne statystyki zawodników ze wszystkich | ||
-- | -- wprowadzonych sezonów. | ||
-- | -- | ||
-- | -- KOSZYKÓWKA | ||
-- | -- | ||
-- | -- Tabele: | ||
-- | -- 1. Mecze | ||
-- 2. Punkty | |||
-- 3. Minuty | |||
-- 4. Asysty | |||
-- 5. Zbiórki | |||
-- 6. Bloki | |||
-- | -- | ||
-- | -- Użycie: | ||
-- | -- | ||
-- | -- {{#invoke:StatystykiHistoryczne|main | ||
-- |druzyna=Enea Basket Poznań | |||
-- |sezon_biezacy=2025/2026 | |||
-- }} | |||
-- | -- | ||
-- Zawodnicy występujący w wybranym sezonie | |||
-- są wyróżniani pogrubieniem. | |||
-- ========================================================= | -- ========================================================= | ||
-- ========================================================= | function p.main(frame) | ||
-- | |||
-- ========================================================= | -- ===================================================== | ||
-- PARAMETRY | |||
-- ===================================================== | |||
local druzyna = | |||
mw.text.trim( | |||
frame.args.druzyna or "" | |||
) | |||
local sezonBiezacy = | |||
mw.text.trim( | |||
frame.args.sezon_biezacy or "" | |||
) | |||
-- ===================================================== | |||
-- SPRAWDZENIE DRUŻYNY | |||
-- ===================================================== | |||
if druzyna == "" then | |||
return | |||
"'''Błąd:''' nie podano parametru <code>druzyna</code>." | |||
end | |||
-- ===================================================== | |||
-- BEZPIECZNE PRZYGOTOWANIE NAZW | |||
-- ===================================================== | |||
local druzynaSQL = | |||
mw.ustring.gsub( | |||
druzyna, | |||
"'", | |||
"''" | |||
) | |||
local sezonSQL = "" | |||
if sezonBiezacy ~= "" then | |||
sezonSQL = | |||
mw.ustring.gsub( | |||
sezonBiezacy, | |||
"'", | |||
"''" | |||
) | |||
end | |||
-- ===================================================== | |||
-- FUNKCJA LICZBOWA | |||
-- ===================================================== | |||
local function liczba(value) | |||
return | |||
tonumber(value or 0) | |||
or 0 | |||
end | |||
-- ===================================================== | |||
-- USTALENIE SEZONU WYRÓŻNIENIA | |||
-- ===================================================== | |||
local sezonWyroznienia = "" | |||
local znalezionoBiezacy = false | |||
-- ----------------------------------------------------- | |||
-- Najpierw sprawdzamy sezon podany przez użytkownika | |||
-- ----------------------------------------------------- | |||
if sezonSQL ~= "" then | |||
local sprawdzenieSezonu = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
"UdzialZawodnika.zawodnik=zawodnik", | |||
{ | |||
join = | |||
"UdzialZawodnika.mecz=Mecze.id", | |||
where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND Mecze.sezon='" | |||
.. sezonSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0", | |||
groupBy = | |||
"UdzialZawodnika.zawodnik", | |||
limit = 5000 | |||
} | |||
) | |||
if sprawdzenieSezonu | |||
and #sprawdzenieSezonu > 0 then | |||
sezonWyroznienia = sezonBiezacy | |||
znalezionoBiezacy = true | |||
end | |||
end | end | ||
-- ===================================================== | |||
-- JEŻELI NIE MA DANYCH DLA PODANEGO SEZONU | |||
-- SZUKAMY OSTATNIEGO SEZONU | |||
-- ===================================================== | |||
if not znalezionoBiezacy then | |||
local sezony = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
"Mecze.sezon=sezon", | |||
{ | |||
join = | |||
"UdzialZawodnika.mecz=Mecze.id", | |||
where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0", | |||
groupBy = | |||
"Mecze.sezon", | |||
orderBy = | |||
"Mecze.sezon DESC", | |||
limit = 100 | |||
} | |||
) | |||
if sezony and #sezony > 0 then | |||
sezonWyroznienia = | |||
mw.text.trim( | |||
sezony[1].sezon or "" | |||
) | |||
end | |||
end | |||
-- ===================================================== | -- ===================================================== | ||
-- | -- POBRANIE ŁĄCZNYCH DANYCH STATYSTYCZNYCH | ||
-- ===================================================== | -- ===================================================== | ||
local fields = table.concat({ | local fields = table.concat({ | ||
"zawodnik=zawodnik", | "UdzialZawodnika.zawodnik=zawodnik", | ||
"mecz= | |||
" | "COUNT(UdzialZawodnika.mecz)=mecze", | ||
" | |||
"asysta= | "SUM(UdzialZawodnika.gol)=punkty", | ||
"zbiorka= | |||
"blok= | "SUM(UdzialZawodnika.minuty)=minuty", | ||
"SUM(UdzialZawodnika.asysta)=asysty", | |||
"SUM(UdzialZawodnika.zbiorka)=zbiorki", | |||
"SUM(UdzialZawodnika.blok)=bloki" | |||
}, ",") | }, ",") | ||
| Linia 105: | Linia 219: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- WARUNEK | ||
-- ===================================================== | -- ===================================================== | ||
local where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0" | |||
-- ===================================================== | |||
-- ZAPYTANIE | |||
-- ===================================================== | |||
local rows = | local rows = | ||
| Linia 130: | Linia 237: | ||
"UdzialZawodnika", | "UdzialZawodnika", | ||
fields, | fields, | ||
{ | |||
where = where, | |||
groupBy = | |||
"UdzialZawodnika.zawodnik", | |||
limit = 5000 | |||
} | |||
) | ) | ||
| Linia 141: | Linia 255: | ||
return | return | ||
"''Brak danych statystycznych " | "''Brak danych statystycznych dla drużyny " | ||
.. " | .. druzyna | ||
.. ".''" | |||
end | end | ||
| Linia 148: | Linia 263: | ||
-- ===================================================== | -- ===================================================== | ||
-- | -- AKTUALNI ZAWODNICY | ||
-- ===================================================== | -- ===================================================== | ||
local | local aktualni = {} | ||
if sezonWyroznienia ~= "" then | |||
local sezonAktualnySQL = | |||
mw.ustring.gsub( | |||
sezonWyroznienia, | |||
"'", | |||
"''" | |||
) | |||
local currentRows = | |||
mw.ext.cargo.query( | |||
"UdzialZawodnika,Mecze", | |||
"UdzialZawodnika.zawodnik=zawodnik", | |||
{ | |||
join = | |||
"UdzialZawodnika.mecz=Mecze.id", | |||
where = | |||
"UdzialZawodnika.druzyna='" | |||
.. druzynaSQL | |||
.. "'" | |||
.. " AND Mecze.sezon='" | |||
.. sezonAktualnySQL | |||
.. "'" | |||
.. " AND UdzialZawodnika.minuty > 0", | |||
groupBy = | |||
"UdzialZawodnika.zawodnik", | |||
limit = 5000 | |||
} | |||
) | |||
if currentRows then | |||
for _, row in ipairs(currentRows) do | |||
local zawodnik = | |||
mw.text.trim( | |||
row.zawodnik or "" | |||
) | |||
if zawodnik ~= "" then | |||
aktualni[zawodnik] = true | |||
end | |||
end | |||
end | |||
end | |||
-- ===================================================== | -- ===================================================== | ||
-- | -- PRZYGOTOWANIE DANYCH | ||
-- ===================================================== | -- ===================================================== | ||
local zawodnicy = {} | |||
for _, row in ipairs(rows) do | for _, row in ipairs(rows) do | ||
local zawodnik = | local zawodnik = | ||
| Linia 169: | Linia 346: | ||
if zawodnik ~= "" then | if zawodnik ~= "" then | ||
table.insert( | |||
zawodnicy, | |||
{ | |||
zawodnik = zawodnik, | |||
mecze = | |||
liczba(row.mecze), | |||
punkty = | |||
liczba(row.punkty), | |||
-- Cargo przechowuje minuty jako SEKUNDY | |||
minuty = | |||
liczba(row.minuty), | |||
asysty = | |||
liczba(row.asysty), | |||
zbiorki = | |||
liczba(row.zbiorki), | |||
bloki = | |||
liczba(row.bloki), | |||
aktualny = | |||
aktualni[zawodnik] or false | |||
} | |||
) | |||