Portál AbcLinuxu, 10. května 2025 12:36
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.