Portál AbcLinuxu, 7. listopadu 2025 22:28
SELECT
clovek.clovek_id,
clovek.jmeno,
vykon_celkem.result,
vykon_v_letech.result
FROM
clovek
JOIN ( SELECT clovek_id, MAX(vykon) FROM vykon GROUP BY clovek_id ) AS vykon_celkem ON vykon_celkem.clovek_id = clovek.clovek_id
JOIN ( SELECT clovek_id, MAX(vykon) FROM vykon WHERE leta BETWEEN 2005 AND 2009 GROUP BY clovek_id ) AS vykon_v_letech ON vykon_v_letech.clovek_id = clovek.clovek_id
Select clovek_id, clovek_jmeno, max(vykon) vykon, max(case when rok in (2005,2006,2007,2008,2009) then vykon else NULL end) vykon_v_letech from tabulka group by clovek_id, clovek_jmenofinta je vodkoukana vocaď
select clovek,
vykon,
case when rok between 2005 and 2009 then vykon else null end; vykon59
vybere vykony podle zadanych kriterii do ruznych sloupcu. De facto jde jen o priznak, zda je vykon z daneho obdobi, ale pro nasledne grupovani je nejjednodussi tam tu hodnotu rovnou vlozit. Dale pak
select max(vykon), max(vykon59) from dotaz_vyse group by clovek
WITH max_vykony AS (SELECT /*+ materialize */ clovek_id, max(vykon) max1
FROM tabulka
GROUP BY clovek_id),
max_vykony_05_09 AS (SELECT /*+ materialize */ clovek_id, max(vykon) max2
FROM tabulka
WHERE rok BETWEEN 2005 AND 2009
GROUP BY clovek_id)
SELECT DISTINCT tab.clovek_id,
(SELECT max1
FROM max_vykony
WHERE clovek_id = tab.clovek_id),
(SELECT max2
FROM max_vykony
WHERE clovek_id = tab.clovek_id)
FROM tabulka tab
WITH max_vykony AS (SELECT /*+ materialize */ clovek_id, max(vykon) max1
FROM vykony
GROUP BY clovek_id),
max_vykony_05_09 AS (SELECT /*+ materialize */ clovek_id, max(vykon) max2
FROM vykony
WHERE rok BETWEEN 2005 AND 2009
GROUP BY clovek_id)
SELECT l.clovek_id,
(SELECT max1
FROM max_vykony
WHERE clovek_id = l.clovek_id),
(SELECT max2
FROM max_vykony_05_09
WHERE clovek_id = l.clovek_id)
FROM lidi l
SELECT AVG(vykon) FROM vykony WHERE zavod=88 AND vykon IN (
SELECT vykon FROM vykony WHERE zavod=88 ORDER BY vykon DESC LIMIT 5
);
To je ok. Kdyz to ale napisu, tak se mi objevi hlaska:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Select avg(vykon)
from
(
Select vykon from vykony
where zavod = 88
limit 5
)dta
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.