用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名称遭第2名花钱... 近日,网传广东省雷州市特殊教育学校有关人员在教师招聘中存在违规行为,引发社会广泛关注。8月5日,广东...
印度乘客打车不付钱只笑嘻嘻说谢... 一段走红网络的视频显示,8月3日,一位印度乘客在越南搭乘出租车。车辆抵达目的地后,他却告诉司机,“我...
“如果美国能封锁AI,他们将再... “如果美国能在这里封锁AI,他们将再控制全球南方200年。”国际民众合作协会(IAPC)拉美协调员、...
黄河科技学院为新生送上“大礼包... 盛夏渐远,新程将至。黄河科技学院为2026级新生量身打造了一份涵盖经济帮扶、专业调整、学业提升与专属...
中科美菱获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示中科美菱(920992)新获得一项实用新型专利授权,专利名为“...
华为史上续航最长平板发布!仅厚... 【CNMO科技消息】8月5日,华为MatePad Pro 12英寸平板正式发布,售价5999元起。 ...
移远通信获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示移远通信(603236)新获得一项实用新型专利授权,专利名为“...
被呼吁辞职之际,因凡蒂诺与FI... 【环球网快讯】据法新社最新消息,国际足联(FIFA)主席因凡蒂诺当地时间周三(5日)在摩洛哥与FIF...
原创 S... ## 这是猎鹰9号火箭上面级箭体将与月球相撞的地点。这枚废弃火箭将以每小时5400英里(8700公...
“婚外胚胎案”当事妻子:胚胎若... 连日来,“妻子申请销毁丈夫婚外胚胎遭拒”一事持续引发网友的广泛关注。8月5日上午,扬子晚报/紫牛新闻...