每天把A表的数据写入到B表

#!/bin/bash
 source /etc/profile

if [ -z $1 ];
  then
  date=`date -d yesterday +"%Y-%m-%d"`
  else
  date=$1
 fi

 

echo "=================== ${date} start ==================="

 

#系统、服务器、动作都为全部的情况
sqlOne="
 INSERT INTO st_las_chart_ds
 (sdate,system,server,request,access_count,avg_duration,avg_response,system_tot_access_count,system_act_tot_access_count,system_avg_duration,system_avg_response)
 SELECT D1.sdate,'全部' AS system,'全部' server,'全部' AS request,0 AS access_count,0 AS avg_duration,0 AS avg_response,
  D1.tot_access_count AS system_tot_access_count,
  D1.act_tot_access_count AS system_act_tot_access_count,
  round(IFNULL(D1.tot_sum_duration/D1.tot_access_count,0),3) AS system_avg_duration,
         round(IFNULL(D1.tot_sum_response/D1.D1.tot_access_count,0),3) AS system_avg_response
 FROM(
 SELECT sdate,
  sum(sum_duration) tot_sum_duration,
  sum(CASE WHEN request LIKE '%.do' THEN sum_duration
  WHEN request LIKE '/rpc/%' THEN sum_duration
  WHEN request LIKE '/openrpc/%' THEN sum_duration
  WHEN request LIKE '/webservice/%' THEN sum_duration
  WHEN request LIKE '/ws/%' THEN sum_duration
  ELSE 0 END) act_tot_sum_duration,
         sum(sum_response) tot_sum_response,
  sum(access_count) tot_access_count,
  sum(CASE WHEN request LIKE '%.do' THEN access_count
  WHEN request LIKE '/rpc/%' THEN access_count
  WHEN request LIKE '/openrpc/%' THEN access_count
  WHEN request LIKE '/webservice/%' THEN access_count
  WHEN request LIKE '/ws/%' THEN access_count
  ELSE 0 END) act_tot_access_count
 FROM lasmyisam.st_las_request_ds
 WHERE sdate='${date}'
 GROUP BY sdate
 ) D1
 ON DUPLICATE KEY UPDATE
 access_count=values(access_count),
 avg_duration=values(avg_duration),
 avg_response=values(avg_response),
 system_tot_access_count=values(system_tot_access_count),
 system_act_tot_access_count=values(system_act_tot_access_count),
 system_avg_duration=values(system_avg_duration),
 system_avg_response=values(system_avg_response);"

 

mysql --host='test.com' -uroot -p123456789 -e "${sqlOne}" --default-character-set=utf8 testdb


echo "sqlOne: $sqlOne"

echo "===================DONE==================="

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C语言代码实现,用于计算工作日模式需要努力的水平才能与每天进步1%一样: ```c #include <stdio.h> #include <math.h> int main() { double daily_progress = 0.01; //每天进步1% double daily_decline = 0.01; //每天退步1% double workdays_progress = 0.01; //工作日进步1% double restdays_decline = 0.01; //休息日下降1% double workdays = 5.0; //一周5个工作日 double restdays = 2.0; //一周2个休息日 double workdays_effort = 0.0; //工作日努力水平 double total_progress_A = pow(1.01, 365); //A君一年的总进步 double total_progress_B = 1.0; //B君一年的总进步 double total_progress_A_10years = 1.0; //A君十年的总进步 double total_progress_B_10years = 1.0; //B君十年的总进步 double workdays_total_progress_A = 0.0; //A君一年工作日的总进步 double workdays_total_progress_B = 0.0; //B君一年工作日的总进步 double workdays_total_progress_A_10years = 0.0; //A君十年工作日的总进步 double workdays_total_progress_B_10years = 0.0; //B君十年工作日的总进步 int i, j; //计算B君一年的总进步 for (i = 1; i <= 365; i++) { if (i % 7 == 6 || i % 7 == 0) { //休息日 total_progress_B *= (1 - restdays_decline); } else { //工作日 total_progress_B *= (1 + workdays_progress); } } //计算工作日努力水平 for (i = 1; i <= 10000; i++) { workdays_total_progress_A = pow(1 + workdays_progress, 5 * 365); workdays_total_progress_B = pow(1 + (i / 10000.0), 5 * 365) * pow(1 - restdays_decline, 2 * 365); if (fabs(workdays_total_progress_A - total_progress_A) < fabs(workdays_total_progress_B - total_progress_A)) { workdays_effort = i / 10000.0; break; } } //计算A君和B君十年的总进步 for (i = 1; i <= 10; i++) { total_progress_A_10years *= pow(1.01, 365 * i); total_progress_B_10years *= pow(1 + workdays_progress, 5 * 365) * pow(1 - restdays_decline, 2 * 365); workdays_total_progress_A_10years += pow(1 + workdays_progress, 5 * 365 * i); workdays_total_progress_B_10years += pow(1 + workdays_effort, 5 * 365) * pow(1 - restdays_decline, 2 * 365 * i); } //将A君和B君十年的总进步写入文件 FILE* fp = fopen("progress.txt", "w"); fprintf(fp, "A君10年%.0lf B君10年%.0lf\n", total_progress_A_10years, total_progress_B_10years); fclose(fp); //将A君和B君十年工作日的总进步写入文件 fp = fopen("workdays_progress.txt", "w"); fprintf(fp, "A君10年%.0lf B君10年%.0lf\n", workdays_total_progress_A_10years, workdays_total_progress_B_10years); fclose(fp); return 0; } ``` 注:以上代码仅为示例,可能存在一些问题,如计算精度问题等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值