用shell把执行的两条sql语句相加并输出数据库名和相加的值以tab健隔开
admin
2023-05-26 11:01:11
0

SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail0` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;

+

SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail1` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;


每次返回的是+号上下两句sql查询的和。

注意,有可能其中一句sql返回的是NULL或者报错信息(没有这个表)。

格试如下:

输出结果
数据库名1   sql1+sql2的和
数据库名2   sql1+sql2的和
数据库名3   sql1+sql2的和
...               ...
中间要以tab健隔开 


代码如下:

#!/bin/bash
USER='root'
PASSWD='123456'
IP='192.168.1.1'
for i in  tzpay tzpay360 tzpay_179 tzpay_9377 tzpay_dx2 tzpay_dx3 tzpay_dx4 tzpay_dx5 tzpay_dx6 tzpay_lt1 tzpay_lt2 tzpay_lt3 tzpay_lt4 tzpay_yy
do
  table1=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print $1}')
  table4=$(mysql -u$USER -p$PASSWD -h$IP $i -e 'show tables like "Lg_ConsumeDetail0"' | wc -l)
    
  #判断存不存在表0,不存在则打印表1的值,跳过本次循环 
  if [ $table4  -eq 0  ];then
       mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print b"\t"$1}'
       continue
  fi  
  table2=$(mysql -u$USER -p$PASSWD -h$IP $i -e 'show tables like "Lg_ConsumeDetail1"' | wc -l) 
  
  #判断存不存在表1,不存在则打印表0的值,跳过本次循环  
  if [ $table2 -eq 0 ];then
        mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk -vb=$i '{print b"\t"$1}'
        continue
  fi
  table3=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print $1}')
     
  #判断表1和表0同时为NULL的话,则直接输出NULL,跳过本次循环  
  if [ $table3 == "NULL" ] && [ $table1 == "NULL" ];then
        echo NULL | awk -vb=$i '{print b"\t"$1}'
        continue
  fi
  
  #判断表1为NULL的话,则直接输出表0的值,跳过本次循环  
  if [ $table3 == "NULL" ];then
        mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk -vb=$i '{print b"\t"$1}'
        continue
  fi
  
  #判断表0为NULL的话,则直接输出表1的值,跳过本次循环  
  if [ $table1 == "NULL" ];then
        mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print b"\t"$1}'
        continue
  fi
  
  #上面判断都不存的话,就把表0和表1的值相加输出
  expr $table1 + $table3  | awk -vb=$i '{print b"\t"$1}' 
done


执行结果如下:

[root@10-9-181-186 opt]# sh sql_sum.sh
tzpay   69768460
tzpay360        23185990
tzpay_179       1259110
tzpay_9377      57750
tzpay_dx2       32938190
tzpay_dx3       33270350
tzpay_dx4       12540690
tzpay_dx5       13220880
tzpay_dx6       NULL
tzpay_lt1       33962100
tzpay_lt2       23586690
tzpay_lt3       10345880
tzpay_lt4       NULL
tzpay_yy        NULL


相关内容

热门资讯

印度缺油,快受不了了 文字 | 无刺王冠龙 制图 | 果 校对 | 朝乾 编辑 | 果最近,印度人的日子一天比一天难熬了:...
用柠檬酸清洗热水器应该配多少浓... 使用柠檬酸清洗热水器的水垢,在配对比例上应当是1:20需要注意的是具体情况还需要根据水垢的严重度来进...
告诉一下金帝集成灶最新款适合开... 最佳回答 你说的蒸箱款呢?还是蒸烤一体机?我觉得金帝集成灶的设计都非常好看,跟橱柜搭配非常和谐,吸烟...
侧吸油烟机漏油怎么回事 侧吸油烟机漏油怎么回事1、有时候在安装的时候没有调整好角度,仰角不够,或者是清洗时间过长导致油箱的堵...
侧吸油烟机漏油了怎么办 侧吸油烟机是厨房中必不可少的家电之一,可以有效地吸收油烟,保持厨房清洁和舒适。然而,如果侧吸油烟机出...
方太吸油烟机声音大 可能是里面的油烟太多了,需要进行清洗。或者是油烟机要坏掉了,需要专业人员进行维修。如果油烟机不能安装...
男子男扮女装、衣着暴露在学校周... 近日,海南省文昌市互联网信息办公室在日常巡查中发现,某短视频平台网络主播杨某某多次以男扮女装、衣着暴...
伊朗最高领袖:战争让官员肩负更... 据英国天空新闻报道,伊朗现任最高领袖穆杰塔巴·哈梅内伊近日发表书面声明,在纪念已故前总统莱希逝世两周...
雨夜坠河的皮卡,满车都是亲戚 作者 | 黄泽敏 实习生 | 黄思婷 编辑 | 向现肖逸(化名)没有等来奇迹。5月18日,肖逸告诉南...
赖清德抛0到18岁月发5000... 海峡导报综合报道 台湾地区领导人赖清德20日发表两周年就职演说,宣称台当局近日将提出所谓台湾人口对策...