SAK }‘ŠÙ
SQL –â‚¢‡‚킹 - rollupAcubeAgrouping setsAhavingAusingAcrossAnatural
‚±‚ê‚ç‚Ì‹@”\‚ÍAOracle ê—p‚Ì‹C‚ª‚·‚éB(Oracle8i ˆÈ~?) ¡ROLLUP E¬Œv’l‚ðo—Í‚·‚éB select •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by rollup(•i”Ô); •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ------------------ ---------- ----------- ----------- a001 25 10562 422.48 b001 7 16797 2399.57143 c001 3 6010 2003.33333 35 33369 953.4 select “¾ˆÓæCD, •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by rollup(“¾ˆÓæCD, •i”Ô); “¾ˆÓ •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ---- ------------------ ---------- ----------- ----------- 1000 a001 22 6452 293.272727 1000 b001 1 2000 2000 1000 c001 2 4510 2255 1000 25 12962 518.48 2000 a001 3 4110 1370 2000 b001 6 14797 2466.16667 2000 c001 1 1500 1500 2000 10 20407 2040.7 35 33369 953.4 ¡CUBE E‚ ‚ç‚ä‚é‘g‚݇‚킹‚̬Œv’l‚ðo—Í‚·‚éB(ƒNƒƒXWŒv’l) select •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by cube(•i”Ô); •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ------------------ ---------- ----------- ----------- a001 25 10562 422.48 b001 7 16797 2399.57143 c001 3 6010 2003.33333 35 33369 953.4 select “¾ˆÓæCD, •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by cube(“¾ˆÓæCD, •i”Ô); “¾ˆÓ •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ---- ------------------ ---------- ----------- ----------- 1000 a001 22 6452 293.272727 1000 b001 1 2000 2000 1000 c001 2 4510 2255 1000 25 12962 518.48 2000 a001 3 4110 1370 2000 b001 6 14797 2466.16667 2000 c001 1 1500 1500 2000 10 20407 2040.7 a001 25 10562 422.48 b001 7 16797 2399.57143 c001 3 6010 2003.33333 35 33369 953.4 ¡GROUPING SETS Egrouping set ‚ÅŽw’肵‚½€–Ú‚Ì’l‚¾‚¯‚ð‚à‚Á‚Ä‚‚銴‚¶B select •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by grouping sets(•i”Ô); •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ------------------ ---------- ----------- ----------- a001 25 10562 422.48 b001 7 16797 2399.57143 c001 3 6010 2003.33333 select “¾ˆÓæCD, •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by grouping sets(“¾ˆÓæCD, •i”Ô); “¾ˆÓ •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ---- ------------------ ---------- ----------- ----------- 1000 25 12962 518.48 2000 10 20407 2040.7 a001 25 10562 422.48 b001 7 16797 2399.57143 c001 3 6010 2003.33333 ¡CONNECT BY EŠK‘w–â‚¢‡‚킹‚ÉŽg‚¦‚éƒe[ƒuƒ‹‚ª‚È‚©‚Á‚½B ŽŸ‚ÍA’P‚È‚é\•¶—á‚Å‚·B select •i”Ô, Žó’” from Žó’m connect by •i”Ô = “¾ˆÓæCD; select •i”Ô, Žó’” from Žó’m connect by prior •i”Ô = “¾ˆÓæCD and Žó’” >= 1000; ¡HAVING EWŒvŒ‹‰Ê‚ɑ΂·‚é–â‚¢‡‚킹ðŒ‚ðŽw’è‚·‚éB select “¾ˆÓæCD, •i”Ô, count(*), sum(Žó’”), avg(Žó’”) from Žó’m group by “¾ˆÓæCD, •i”Ô having sum(Žó’”) > 1000; “¾ˆÓ •i”Ô COUNT(*) SUM(Žó’”) AVG(Žó’”) ---- ------------------ ---------- ----------- ----------- 1000 a001 22 6452 293.272727 1000 b001 1 2000 2000 1000 c001 2 4510 2255 2000 a001 3 4110 1370 2000 b001 6 14797 2466.16667 2000 c001 1 1500 1500 ¡USING E€–Ú‚ÅŒ‹‡‚·‚éB select * from Žó’m left join “¾ˆÓæm using (“¾ˆÓæCD); ¡CROSS JOIN EOracle ‚Ìu,v•W‹L‚Æ“¯‚¶B(ƒNƒƒXŒ‹‡AƒNƒƒXƒWƒ‡ƒCƒ“) select * from Žó’m cross join “¾ˆÓæm where Žó’m.“¾ˆÓæCD = “¾ˆÓæm.“¾ˆÓæCD; ¡NATURAL JOIN E“¯‚¶–¼‘O‚Ì—ñ‚ðŽ©‘RŒ‹‡‚·‚éB(ƒiƒ`ƒ…ƒ‰ƒ‹ƒWƒ‡ƒCƒ“) select * from Žó’m natural left join “¾ˆÓæm; ¡SQL Šî‘bŽÀ’n•ÒŽ‘—¿
¡SQL Šî‘b•ÒŽ‘—¿
¡SQL ƒ`ƒ…[ƒjƒ“ƒO•ÒŽ‘—¿
¡Oracle PL/SQL •ÒŽ‘—¿
¡PostgreSQL •ÒAJAVA ServletAJSP •ÒŽ‘—¿
¡MySQL •ÒŽ‘—¿