Для SQL Server 2017 я создал таблицу под названием Challenger
drop table if exists challenger
create table challenger (O_Ring_Failure char(1),
Launch_temperature float,
Leak_check_pressure char(10))
select * from challenger
insert into challenger values ('N',66,'Low')
insert into challenger values ('N',69,'Low')
insert into challenger values ('N',68,'Low')
insert into challenger values ('N',67,'Low')
insert into challenger values ('N',72,'Low')
insert into challenger values ('N',73,'Low')
insert into challenger values ('N',70,'Low')
insert into challenger values ('N',78,'High')
insert into challenger values ('N',67,'High')
insert into challenger values ('N',67,'High')
insert into challenger values ('N',75,'High')
insert into challenger values ('N',70,'High')
insert into challenger values ('N',81,'High')
insert into challenger values ('N',76,'High')
insert into challenger values ('N',79,'High')
insert into challenger values ('N',75,'High')
insert into challenger values ('N',76,'High')
insert into challenger values ('Y',70,'Low')
insert into challenger values ('Y',57,'High')
insert into challenger values ('Y',63,'High')
insert into challenger values ('Y',70,'High')
insert into challenger values ('Y',53,'High')
insert into challenger values ('Y',58,'High')
, которую я хочу извлечь из столбца Launch_tempera с помощью O_Ring_Failure, чтобы создать еще два столбца Y_temperam и N_tempera (т.е.температура для этих O_Ring_Failure = 'Y' и 'N')
Я написал следующее:
alter table challenger add
Y_temperature float,
N_temperature float;
go
with cte1
as
( select Launch_temperature as y_temp from challenger where O_Ring_Failure='Y'),
cte2 as(select Launch_temperature as n_temp from challenger where O_Ring_Failure='N')
insert into challenger
select y_temp, n_temp from cte1, cte2;
go
select * from challenger
Все же результаты меня подводят:
Я хочу передать эту таблицу и два столбца хранимой процедуре, которую я создал для вычисления Z-показателя, поэтому я неЭти NULLS нужны в начале и дубликаты для Y_tempera или N_temperars.Есть ли способ избавиться от них?
Хранимая процедура выглядит следующим образом:
create procedure usp_bivariate
@tbl varchar(200),
@target_colname varchar(100),
@predictor_colname varchar(100)
as
begin
declare @sql varchar(max)
set @sql='with cte1(mean1,mean2, var1, var2, count1, count2) as ( select avg('+@target_colname+') as mean1, var('+@target_colname
+') as var1,count('+@target_colname+') as count1, avg('+@predictor_colname+') as mean2, var('+@predictor_colname
+') as var2,count('+@predictor_colname+') as count2 from '+@tbl+') select (mean1-mean2)/sqrt(var1/count1+var2/count2) from cte1'
exec(@sql)
end