新普金娱乐网址


办好3个助教有多难?——我的科班发展前传

要看准时机,也要看的长久-《穷Charles宝典》数学

数学sql纵向表转成横向表

  • 三月 25, 2019
  • 数学
  • 没有评论

declare @tab table(Class varchar(20),Student varchar(20),Course
varchar(50),Grades decimal(7,2));
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’张三’,’语文’,60);
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’张三’,’数学’,70);
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’张三’,’英语’,80);
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’李四’,’语文’,30);
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’李四’,’数学’,40);
insert into @tab(Class,Student,Course,Grades)
values(‘A班’,’李四’,’英语’,50);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’王五’,’语文’,65);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’王五’,’数学’,75);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’王五’,’英语’,85);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’赵六’,’语文’,35);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’赵六’,’数学’,45);
insert into @tab(Class,Student,Course,Grades)
values(‘B班’,’赵六’,’英语’,55);

#!/bin/bash
var2 = 'var2'
echo $var2
echo ${var2}
var2 = 'var2_1' #变量可以重复定义但变量名前不加$

var3 = 'var3'
readonly var3 #将var3声明为只读变量
#var3 = 'var3_1' 这里就不能再改变var3的值了

var4 = 'var4'
unset var4 #删除var4变量
#echo ${var4} 这里不能再调用var4了

var5 = 'var5'
var6 = "This is ${var5}"       #拼接字符串
var7 = "This is "$var5" ,too" #拼接字符串

var8 = 'itvar8'
echo ${#var8} #输出var8的长度,即输出6

var9 = 'Hello World!'
echo ${var9:1:5} #从字符串第2个字符开始截取5个字符

var10 = 'Hello World!'
echo `expr index "$var10" World` #查找字符World在字符串中的位置

arr1 = ('var1' 'var2' 'var3') #定义数组方式1
arr2 = (                           #定义数组方式2
    'var1'
    'var2'
    'var3'    
)

var3[1] = 'var2'            #通过下标赋值

var_arr_1 = ${var2[1]}  #读取数组元素
var_arr_all = ${var2[@]}#读取所有元素

arr_lend_1 = ${#var2[@]} #获取数组长度
arr_lend_2 = ${#var2[*]} #获取数组长度

select * from @tab

向脚本传递参数

select
    (case when Grouping(Class)=1 then ‘总平均’ when Grouping(Student)=1
then ” else Class end ) as Class
    ,(case when Grouping(Class)=1 then ” when Grouping(Student)=1 then
‘平均’ else Student end) as Student
    ,cast(avg(语文) as decimal(7,2)) as 语文
    ,cast(avg(数学) as decimal(7,2)) as 数学
    ,cast(avg(英语) as decimal(7,2)) as 英语
    ,cast(avg(总分) as decimal(7,2)) as 总分
from (
    select Class,Student
    ,(select isnull(sum(Grades),0) from @tab where class=”t”.Class and
Student=t.Student and Course=’语文’) as ‘语文’
    ,(select isnull(sum(Grades),0) from @tab where class=”t”.Class and
Student=t.Student and Course=’数学’) as ‘数学’
    ,(select isnull(sum(Grades),0) from @tab where class=”t”.Class and
Student=t.Student and Course=’英语’) as ‘英语’
    ,(select isnull(sum(Grades),0) from @tab where class=”t”.Class and
Student=t.Student) as ‘总分’
    from @tab as t
    group by Class,Student
    ) as tempTab
group by Class,Student,语文,数学,英语,总分 with rollup
having Grouping(语文)=1
    and Grouping(数学)=1
    and Grouping(英语)=1

#!/bin/bash
echo "执行的文件名$0";
echo "第一个参数为$1";
echo "第二个参数为$2";

 

SQL语句之普通行列转换

  运行:

要是有张学生成绩表(Result)如下
Name Subject Result
张三 语文  73
张三 数学  83
张三
物理  93
李四 语文  74
李四 数学  84
李四 物理  94

$ chmod +x shell.sh 
$ ./shell.sh 1 2
执行的文件名shell.sh
第一个参数为1
第二个参数为2

建表:

  特殊参数:

create TABLE TABLE1 (Name varchar(50),Subject varchar(50),Result int)

参数处理     说明
$#     传递到脚本的参数个数
$*     以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$     脚本运行的当前进程ID号
$!     后台运行的最后一个进程的ID号
$@     与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-     显示Shell使用的当前选项,与set命令功能相同。
$?     显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

INSERT INTO TABLE1 VALUES(‘张三’,’语文’,’73’)
INSERT INTO TABLE1
VALUES(‘张三’,’数学’,’83’)
INSERT INTO TABLE1 VALUES(‘张三’,’物理’,’93’)
INSERT
INTO TABLE1 VALUES(‘李四’,’语文’,’74’)
INSERT INTO TABLE1
VALUES(‘李四’,’数学’,’84’)
INSERT INTO TABLE1 VALUES(‘李四’,’物理’,’94’)

  

想变成
姓名 语文 数学 物理
张三 73  83  93
李四 74  84  94

算术运算:

declare @sql varchar(4000)
set @sql = ‘select Name as ‘ + ‘姓名’
select
@sql = @sql + ‘ , sum(case Subject when ”’+Subject+”’ then Result
end)
[‘+Subject+’]’
from (select distinct Subject from TABLE1) as a
set @sql =
@sql + ‘ from TABLE1 group by name’
exec(@sql)

  原生bash不帮忙简单的数学生运动算,可是足以经过其它命令来促成,比如awk和expr

一经上述两表相互换一下:即
表名(cj)
姓名 语文 数学 物理
张三 73  83  93
李四 74  84  94

#!/bin/bash

a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"

想变成

 

Name Subject Result
张三 语文  73
张三 数学  83
张三 物理  93
李四 语文  74
李四
数学  84
李四 物理  94

文本测试运算符:

select 姓名 as Name,’语文’ as Subject,语文 as Result from CJ union
select 姓名 as
Name,’数学’ as Subject,数学 as Result from CJ union
select 姓名 as Name,’物理’ as
Subject,物理 as Result from CJ
order by 姓名 desc

  -r file :文件是还是不是可读

  -w file: 文件是不是可写

  -x file: 文件是或不是可实施

file="/workplace/shell/shell.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi

 

echo命令:

#!/bin/bash

read name   #read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
echo $name

echo "Hello World" > myfile #显示结果定向至文件 

 

流程序控制制:

  if的语法:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

  for的语法:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

  while的语法:

while condition
do
    command
done

  例:

#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done

  case的语法:

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

  

函数

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

 

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图