powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать общую длину?
10 сообщений из 10, страница 1 из 1
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #39610716
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444Ребят, подскажите пожалуйста, как подсчитать общую длинну пробуренных метров, неважно по какой скважине.
(...)
Кажется у меня кривые руки...
Девушка, вы пишите не про свои руки, а про свое фото в профиле. Оценив кривизну ваших рук и других частей тела, посетители обязательно вам помогут и объяснят, причем очень быстро и охотно.
...
Рейтинг: 0 / 0
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #39610959
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kopelly,
спасибо болшьшое
...
Рейтинг: 0 / 0
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #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
Как посчитать общую длину?
    #39613191
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kopelly, спасибо огромное
Кажется мне пора делиться с тобой своей зарплатой
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать общую длину?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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