下列是我采用Navicat 12.0版本 做每天印度餐厅的报表自动生成报表
1. 打开Navicat编写好程序代码,并保证能正常运行不报错
GROUP_CONCAT函数用于将多个字符串连接成一个字符串,在拼接成字符串时就会存在拼接长度的问题,mysql 默认的拼接最大长度为1024 个字节,由于1024个字节会出现不够用的情况,所以有时需要去根据情况进行修改,方式如下。
MySQL group_concat函数参考链接
由于自己没有在MySQL配置文件中修改group_concat的拼接长度,所以要在函数开头补充修改参数:
#设置最大编排函数长度
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len = 102400;
印度餐厅报表整理的数据整理代码如下:
-- 第一步:建立中间表1,将点法汇总到一列且用文字表示。同时用时间函数筛选最近1年的交易,计算每家店每种点法的具体交易数。
DROP TABLE IF EXISTS middle_list1;
CREATE TABLE IF NOT EXISTS middle_list1 AS
SELECT CONCAT(rice_tag,' ',curry_tag,' ',naan_tag) AS choices,brand_tag,
COUNT(DISTINCT `Order Number`) AS count_order_number
FROM(
SELECT a.*,
case WHEN a.quantity>0 THEN 1 else 0 END AS rice_flag,
case WHEN a.quantity>0 THEN 1 else 0 END AS curry_flag,
case WHEN a.quantity>0 THEN 1 else 0 END AS naan_flag,
case WHEN a.rice_quantity>0 THEN 'rice' else '' END AS rice_tag,
case WHEN a.curry_quantity>0 THEN 'curry' else ' ' END AS curry_tag,
case WHEN a.naan_quantity>0 THEN 'naan' else ' ' END AS naan_tag
FROM(
SELECT brand_tag,`Order Number`,date,
SUM(Quantity) AS quantity,
SUM(Quantity*`Product Price`) AS total_price,
SUM(CASE WHEN `Item Name`LIKE '%rice%' THEN Quantity*`Product Price` ELSE 0 END) AS rice_sales,
SUM(CASE WHEN `Item Name`LIKE '%rice%' THEN Quantity ELSE 0 END) AS rice_quantity,
SUM(CASE WHEN `Item Name`LIKE '%curry%' THEN Quantity*`Product Price` ELSE 0 END) AS curry_sales,
SUM(CASE WHEN `Item Name`