练习题
5.1
SELECT product_id
,product_name
,sale_price
,MAX(sale_price) OVER (ORDER BY product_id) AS Current_max_price
FROM product;
使用的是max聚合,随着product_id不断增加,选择sale_price最大的值,如果没遇到最大的则保留之前最大的。
5.2
SELECT regist_date
,SUM(sale_price)
FROM product
GROUP BY regist_date WITH ROLLUP;
5.3
1、不指定PARTITION BY的效果是固定起点的窗口,长度不断递增,因为不做划分。
2、因为窗口函数是对筛选过的数据做处理。
5.4
DROP PROCEDURE IF EXISTS create_table_test;
DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `create_table_test`()
BEGIN
declare i int;
set i=0;
PREPARE stmt FROM 'CREATE TABLE ? like shop.product;';
while i < 21 do
IF i<10 THEN SET @table_name=CONCAT('table','0',i);
ELSE SET @table_name=CONCAT('table',i);
EXECUTE stmt USING @table_name;
set i=i+1;
end if;
end while;
end //
DELIMITER ;
call `create_table_test`();