ã¯ããã« ã€ã³ãã©ã·ã¹ãã ã°ã«ãŒãã®æ²³éã§ãã æè¿éèšã»åæç³»ã®ã¯ãšãªãæžãæ©äŒãå€ããªã£ãŠããŸãã ãã®äžã§GROUPING SETSã«åºäŒã£ãŠæåããã®ã§ãã®æ°æãåãã¡åããããšæããŸãã èšäºäžã§ã¯ã¯ãšãªãšã³ãžã³ãšããŠpresto 0.217ã䜿çšããŠããŸãã GROUPING SETSãšã¯ GROUPING SETSã¯GROUP BYå¥ã«ä»äžããæ§æã§ãè€éãªGROUP BYãå®çŸãããšãã«äœ¿çšã§ããŸãã å
·äœäŸãèŠãŠãããŸããããäŸãã°ã以äžã®ãããªstockããŒãã«ãèããŸããåºèããšã«ãã«ãŒãã®åšåº«ãããã€ãããã倿®µã¯ããããªã®ãããŸãšããããŒãã«ã§ãã SELECT * FROM ( VALUES ('orange', 1, 100, 51), ('lemon', 2, 50, 102), ('melon', 3, 1025, 23), ('banana', 1, 25, 154), ('orange', 2, 104, 105), ('lemon', 3, 55, 55) ) AS t (name, shop_id, price, qty) ååããšã®åèšãåºãã€ã€ãå
šäœã®åèšãåºããããšããæ¥ããšããŸãããã®å ŽåGROUPING SETSã䜿ããªããšãããšä»¥äžã®ãããªã¯ãšãªã§å®çŸã§ããŸãã SELECT name, SUM(price) AS total_price FROM stock GROUP BY name UNION ALL SELECT NULL, SUM(price) AS total_price FROM stock # å®è¡çµæ name total_price 1359 banana 25 orange 204 melon 1025 lemon 105 ãããGROUPING SETSã§æžãæãããšä»¥äžã®ããã«ãªããŸãã SELECT name, SUM(price) AS total_price FROM stock GROUP BY GROUPING SETS((), name) # å®è¡çµæ name total_price 1359 lemon 105 melon 1025 orange 204 banana 25 ãã®ããã«è€æ°ã®åºæºã§GROUP BYããªããã°ãªããªããã®ããGROUPING SETSã§äžã€ã«ãŸãšããããšãã§ããŸãã å®åã§ã¯ã¯ã©ãŠãã³ã¹ããéèšããŠã°ã©ã衚瀺ãããšãã«éåžžã«åœ¹ã«ç«ã¡ãŸãããã¯ã©ãŠããã³ãããšã«å¥ã®ã°ã©ããæããåèšå€ãåæã«æç»ãããããšãã£ãèŠä»¶ãåºãŠããŠãã¯ããã¯æçŽã«UNIONããŠããŠã30è¡çšåºŠã®ã¯ãšãªã«ãªã£ãŠããŸããããã®åŸprestoã®ãªãã¡ã¬ã³ã¹ãèŠãŠãããGROUPING SETSãèŠã€ããã®ã§è©Šãã«æžãæããŠã¿ããã15è¡ã»ã©ã«ãã£ãããšã¯ãšãªãæžãæ¿ããããšãã§ããŸããã ROLLUPãCUBEãšã®é¢ä¿æ§ GROUPING SETSãšäŒŒãæ§æã«ROLLUPãšCUBEããããŸããROLLUPã§ã¯å°èšãç·èšããŸãšããŠååŸããããšãã§ããŸããCUBEã§ã¯ãã¹ãŠã®çµã¿åããã«å¯ŸããŠç·èšãååŸããããšãã§ããŸãã ããããå
çšã®stockããŒãã«ã«å¯ŸããŠé©çšããçµæãèŠãŠã¿ãŸãããã ROLLUP: SELECT name, shop_id, SUM(price) AS price, SUM(qty) AS qty FROM stock GROUP BY ROLLUP(name, shop_id) # å®è¡çµæ name shop_id price qty 1359 490 banana 25 154 orange 204 156 orange 1 100 51 lemon 3 55 55 melon 1025 23 lemon 2 50 102 melon 3 1025 23 lemon 105 157 banana 1 25 154 orange 2 104 105 CUBE: SELECT name, shop_id, SUM(price) AS price, SUM(qty) AS qty FROM stock GROUP BY CUBE(name, shop_id) # å®è¡çµæ name shop_id price qty 1359 490 banana 25 154 2 154 207 orange 1 100 51 melon 3 1025 23 lemon 3 55 55 melon 1025 23 1 125 205 orange 2 104 105 orange 204 156 lemon 2 50 102 banana 1 25 154 lemon 105 157 3 1080 78 ããããGROUPING SETSã§æžãæãããšä»¥äžã®ããã«ãªããŸãã ROLLUP â GROUPING SETS: SELECT name, shop_id, SUM(price) AS price, SUM(qty) AS qty FROM stock GROUP BY GROUPING SETS((), name, (name, shop_id)) # å®è¡çµæ name shop_id price qty 1359 490 banana 25 154 melon 1025 23 lemon 2 50 102 melon 3 1025 23 lemon 105 157 banana 1 25 154 orange 2 104 105 orange 204 156 orange 1 100 51 lemon 3 55 55 CUBE â GROUPING SETS: SELECT name, shop_id, SUM(price) AS price, SUM(qty) AS qty FROM stock GROUP BY GROUPING SETS((), name, shop_id, (name, shop_id)) # å®è¡çµæ name shop_id price qty 1359 490 banana 25 154 2 154 207 orange 1 100 51 melon 3 1025 23 lemon 3 55 55 lemon 105 157 3 1080 78 orange 204 156 lemon 2 50 102 banana 1 25 154 melon 1025 23 1 125 205 orange 2 104 105 ããããã®å·®åã ãèŠããšã©ãããåããããŠããããããããããšæããŸãã ROLLUP(name, shop_id) â GROUPING SETS((), name, (name, shop_id)) CUBE(name, shop_id) â GROUPING SETS((), name, shop_id, (name, shop_id)) äŸãã°ãçµã¿åãããäžåå¢ãããšãã®å¯Ÿå¿ã¯ãããªããŸããROLLUPã§ã¯äžçªå·Šã®ã«ã©ã ãåºæºãšãããšãã®çµã¿åãããCUBEã§ã¯ãã¹ãŠã®çµã¿åãããããããã°ã«ãŒãã³ã°ããŠããŸãã ROLLUP(name, shop_id, qty) â GROUPING SETS((), name, (name, shop_id), (name, shop_id, qty)) CUBE(name, shop_id, qty) â GROUPING SETS((), name, shop_id, qty, (name, shop_id), (name, qty), (shop_id, qty), (name, shop_id, qty)) GROUPING SETSã§æžãããšã§ãã©ã®çµã¿åããã§éèšããŠããã®ãããããããããªããããå人çã«ãã®æžãæ¹ã奜ã¿ã§ãã çµããã« ä»åã¯GROUPING SETSã«ã€ããŠäœ¿ãæ¹ãšãä»ã®é¡äŒŒæ§æãšã®é¢é£æ§ããŸãšããŸãããæå¹ã«äœ¿ãããšã¯ãšãªããã£ãããšãããããã®ã§æ©äŒãããã°äœ¿ã£ãŠã¿ãŠãã ããã åèèšäº https://prestodb.io/docs/0.217/sql/select.html We are hiring! ãããã£ã§ã¯ãããŸããŸãªãããã¯ããžææŠãããšã³ãžãã¢ãçµ¶è³åéäžã§ãïŒ ãèå³ã®ããæ¹ã¯ä»¥äžã®æ¡çšãµã€ããããæ°è»œã«ãé£çµ¡ãã ããïŒ ãããã£æ ªåŒäŒç€Ÿæ¡çšæ
å ± Tech TalkãMeetUpãéå¬ããŠãããŸãïŒ ãã¡ãããæ°è»œã«ãå¿åãã ããïŒ Event â NIFTY engineering