Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать общую длину? / 10 сообщений из 10, страница 1 из 1
05.03.2018, 13:25
    #39610612
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
Ребят, подскажите пожалуйста, как подсчитать общую длинну пробуренных метров, неважно по какой скважине.

Есть такая таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare  @assay  table (sampleid varchar(255),projectcode varchar(255),  loaddate varchar(255), sampfrom float, sampto float,[value3] float)
insert into @assay  (sampleid,projectcode, loaddate, sampfrom, [sampto],[value3]) values ('UZ-001', 'uz','2017-02-10 17:57:55.707', 5, 10,22)
insert into @assay  (sampleid, projectcode,loaddate, sampfrom, [sampto],[value3]) values ('UZ-001', 'uz','2017-02-17 17:57:55.707', 10, 22,32)
insert into @assay  (sampleid,projectcode, loaddate, sampfrom, [sampto],[value3]) values ('UZ-001','uz', '2017-02-17 17:57:55.707', 50, 52,32)
insert into @assay  (sampleid,projectcode, loaddate, sampfrom, [sampto],[value3]) values ('uz-002', 'uz','2017-02-17 17:57:55.707', 0, 40,100)
insert into @assay  (sampleid, projectcode,loaddate, sampfrom, [sampto],[value3]) values ('uz-002','uz', '2017-02-17 17:57:55.707', 50, 80,100)
select * from @assay where cast([LOADDATE] as date) between '13-feb-2017' and '20-oct-2017'



Мне нужно получить
UZ и 122(Общая длина)
То есть если было бы длина по скважине, то все просто. Ту минус фром, но тут ведь потом эти все длины надо сложить и я совсем не знаю как быть....

То есть сначала
Код: sql
1.
(max(sampto)-min(SAMPFROM))

, а потом для каждой скважины это все сложить...
Как это реализовать не представляю


Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
05.03.2018, 13:49
    #39610632
StarikNavy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
katish444,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
скважина
,sum(длина)

from
   (select (max(sampto)-min(SAMPFROM)) as длина 
....)
as t
group by скважина
...
Рейтинг: 0 / 0
05.03.2018, 14:02
    #39610640
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
StarikNavykatish444,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
скважина
,sum(длина)

from
   (select (max(sampto)-min(SAMPFROM)) as длина 
....)
as t
group by скважина


так для каждой скважины? а если я не знаю сколько их будет?
...
Рейтинг: 0 / 0
05.03.2018, 14:20
    #39610662
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
katish444StarikNavykatish444,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
скважина
,sum(длина)

from
   (select (max(sampto)-min(SAMPFROM)) as длина 
....)
as t
group by скважина


так для каждой скважины? а если я не знаю сколько их будет?

Вам ничего и не нужно знать, за Вас "знает" сама таблица скважин...
...
Рейтинг: 0 / 0
05.03.2018, 15:35
    #39610716
.Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
katish444Ребят, подскажите пожалуйста, как подсчитать общую длинну пробуренных метров, неважно по какой скважине.
(...)
Кажется у меня кривые руки...
Девушка, вы пишите не про свои руки, а про свое фото в профиле. Оценив кривизну ваших рук и других частей тела, посетители обязательно вам помогут и объяснят, причем очень быстро и охотно.
...
Рейтинг: 0 / 0
06.03.2018, 05:17
    #39610955
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
katish444То есть если было бы длина по скважине, то все просто. Ту минус фром, но тут ведь потом эти все длины надо сложить и я совсем не знаю как быть....

То есть сначала
Код: sql
1.
(max(sampto)-min(SAMPFROM))

, а потом для каждой скважины это все сложить...

Уже ведь сама все расписала:

Код: sql
1.
2.
3.
4.
5.
6.
7.
With [Сначала] as 
(Select projectcode,max(sampto)-min(SAMPFROM) as [ДлинаУчасткаСкважины] From @assay
  where cast([LOADDATE] as date) between '13-feb-2017' and '20-oct-2017'
  Group by sampleid,projectcode)

Select projectcode,sum([ДлинаУчасткаСкважины]) as [ДлинаСкважины] From [Сначала]
 Group by projectcode
...
Рейтинг: 0 / 0
06.03.2018, 05:52
    #39610959
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
Kopelly,
спасибо болшьшое
...
Рейтинг: 0 / 0
07.03.2018, 09:41
    #39611647
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
Kopelly
Код: sql
1.
2.
3.
4.
5.
6.
7.
With [Сначала] as 
(Select projectcode,max(sampto)-min(SAMPFROM) as [ДлинаУчасткаСкважины] From @assay
  where cast([LOADDATE] as date) between '13-feb-2017' and '20-oct-2017'
  Group by sampleid,projectcode)

Select projectcode,sum([ДлинаУчасткаСкважины]) as [ДлинаСкважины] From [Сначала]
 Group by projectcode



Помоги мне пожалуйста корректно вставить в скрипт. Куда я только не вставляла и как только не модифицировала - не работает. То одно подчеркнет, то другое. Пыталась перед group by вставить With.... но не сработало...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 Select pp.PROJECTCODE,pp.DESCRIPTION,
a.GeolLenght,
b.SendSample, c.assay, TakenSample 
From 
(
 select  dd.PROJECTCODE as x_project,
sum(cast((case when name = 'totaldrilldepth' then value end) as float)) as GeolLenght 
from drillingdetail dd 
where cast([DRILLINGDATE] as date) between '13-feb-2017' and '20-feb-2017'
 group by PROJECTCODE
) a
full join (
 select  s.PROJECTCODE as x_project,
count(sd.sampleid) as SendSample 
from  SAMPLEDESPATCH sd left join DESPATCHSEND ds on sd.DESPATCHNO=ds.DESPATCHNO left join sample s on s.SAMPLEID=sd.SAMPLEID 
where cast([senddate] as date) between '13-feb-2017' and '20-feb-2017'
 group by PROJECTCODE
) b on a.x_project =b.x_project


full join
(Select projectcode as x_project, count(sss)assay from (select distinct s.sampleid as sss,PROJECTCODE 
from cORPSAMPLEASSAY c left join sample s on s.SAMPLEID= c.SAMPLEID 
where cast([LOADDATE] as date) between '2017-02-13' and '2017-03-10')abc
group by abc.PROJECTCODE)c on a.x_project=COALESCE(b.x_project,c.x_project)
full join (
 select  ss.PROJECTCODE as x_project,
count(ts.sampleid) as TakenSample 
from  SAMPLEDETAILS ts  left join sample ss on ss.SAMPLEID=ts.SAMPLEID 
where cast((case when name = 'SampDateTaken' then value end) as date) between '13-feb-2017' and '20-feb-2017'  
 group by ss.PROJECTCODE
) t on   t.x_project=COALESCE(a.x_project,b.x_project,c.x_project)
left join PROJECT pp on pp.PROJECTCODE=c.x_project or pp.PROJECTCODE=b.x_project or pp.PROJECTCODE=a.x_project or pp.PROJECTCODE=t.x_project

group by pp.PROJECTCODE,a.GeolLenght,pp.DESCRIPTION,
b.SendSample, c.assay,TakenSample  
order by pp.DESCRIPTION
...
Рейтинг: 0 / 0
07.03.2018, 09:53
    #39611652
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
katish444,

С наступающим:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Select pp.PROJECTCODE,pp.DESCRIPTION,
a.GeolLenght,
b.SendSample, c.assay, TakenSample , [ДлинаСкважины] 
From 
PROJECT pp 
Left join 
(
 select  dd.PROJECTCODE as x_project,
sum(cast((case when name = 'totaldrilldepth' then value end) as float)) as GeolLenght 
from drillingdetail dd 
where cast([DRILLINGDATE] as date) between '13-feb-2017' and '20-feb-2017'
 group by PROJECTCODE
) a	on pp.PROJECTCODE=a.x_project 
left join (
 select  s.PROJECTCODE as x_project,
count(sd.sampleid) as SendSample 
from  SAMPLEDESPATCH sd left join DESPATCHSEND ds on sd.DESPATCHNO=ds.DESPATCHNO left join sample s on s.SAMPLEID=sd.SAMPLEID 
where cast([senddate] as date) between '13-feb-2017' and '20-feb-2017'
 group by PROJECTCODE
) b on pp.PROJECTCODE=b.x_project
left join
(Select projectcode as x_project, count(sss)assay from (select distinct s.sampleid as sss,PROJECTCODE 
from cORPSAMPLEASSAY c left join sample s on s.SAMPLEID= c.SAMPLEID 
where cast([LOADDATE] as date) between '2017-02-13' and '2017-03-10') abc
group by abc.PROJECTCODE											   
) c on  pp.PROJECTCODE=b.x_project
left join (
 select  ss.PROJECTCODE as x_project,
count(ts.sampleid) as TakenSample 
from  SAMPLEDETAILS ts  left join sample ss on ss.SAMPLEID=ts.SAMPLEID 
where cast((case when name = 'SampDateTaken' then value end) as date) between '13-feb-2017' and '20-feb-2017'  
 group by ss.PROJECTCODE
) t on   pp.PROJECTCODE=t.x_project
left join (
Select projectcode as x_project,sum([ДлинаУчасткаСкважины]) as [ДлинаСкважины] From 
(Select projectcode,max(sampto)-min(SAMPFROM) as [ДлинаУчасткаСкважины] From @assay
  where cast([LOADDATE] as date) between '13-feb-2017' and '20-oct-2017'
  Group by sampleid,projectcode) zz
Group by projectcode
) z on pp.PROJECTCODE=z.x_project

Where 
a.x_project is not null or
b.x_project is not null or
c.x_project is not null or
x.x_project is not null or
t.x_project is not null	or
z.x_project is not null
order by pp.DESCRIPTION
...
Рейтинг: 0 / 0
12.03.2018, 08:23
    #39613191
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать общую длину?
Kopelly, спасибо огромное
Кажется мне пора делиться с тобой своей зарплатой
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать общую длину? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]