Size: a a a

2020 November 14

K

Kostya in sql_ninja
В таблицу юзеров
источник

K

Kostya in sql_ninja
И апдейтить его при смене номера
источник

N

Nack Nime | #2o2o in sql_ninja
Kostya
Добавить поле msdn varchar 15
не понял что за msdn
источник

K

Kostya in sql_ninja
MSISDN — Википедия
https://ru.wikipedia.org/wiki/MSISDN
источник
2020 November 15

AG

Andrey Gubanov in sql_ninja
Добрый вечер! Помогите нубу плиз - как вот такое решить? 1) Описание данных:  таблица OFFERS содержит информацию о кредитных предложениях клиентов банка. У каждого предложения есть идентификатор (offer_id), дата начала действия (offer_start_date), дата окончания действия (offer_expiration_date). Предложение считается действующим на дату dt, если dt находится между offer_start_date и offer_expiration_date для данного предложения.
Задание: вывести количество действующих предложений на каждый день 2018 года.
источник

DN

Denis Novickiy in sql_ninja
Andrey Gubanov
Добрый вечер! Помогите нубу плиз - как вот такое решить? 1) Описание данных:  таблица OFFERS содержит информацию о кредитных предложениях клиентов банка. У каждого предложения есть идентификатор (offer_id), дата начала действия (offer_start_date), дата окончания действия (offer_expiration_date). Предложение считается действующим на дату dt, если dt находится между offer_start_date и offer_expiration_date для данного предложения.
Задание: вывести количество действующих предложений на каждый день 2018 года.
что-то уже сделано?
источник

AG

Andrey Gubanov in sql_ninja
@V1nn1 Пока вот так declare @startdate  date = '20180101'
declare @dateoffset date = dateadd(day, -1, dateadd(year, 1, @startdate))

; with sequence(n) as
(
 select 0
 union all
 select n + 1 from sequence
 where n < datediff(day, @startdate, @dateoffset)
),
dates(datecolumn) as
(
 select dateadd(day, n, @startdate)
 from sequence
)
select datecolumn
from dates
order by datecolumn
option (maxrecursion 0) ;
источник

F

Frankie4Fingers in sql_ninja
Andrey Gubanov
@V1nn1 Пока вот так declare @startdate  date = '20180101'
declare @dateoffset date = dateadd(day, -1, dateadd(year, 1, @startdate))

; with sequence(n) as
(
 select 0
 union all
 select n + 1 from sequence
 where n < datediff(day, @startdate, @dateoffset)
),
dates(datecolumn) as
(
 select dateadd(day, n, @startdate)
 from sequence
)
select datecolumn
from dates
order by datecolumn
option (maxrecursion 0) ;
Что он выводит?
источник

AG

Andrey Gubanov in sql_ninja
Ну после join с основной, выводит даты
источник

F

Frankie4Fingers in sql_ninja
Andrey Gubanov
Ну после join с основной, выводит даты
Не вижу там join
источник

AG

Andrey Gubanov in sql_ninja
Ну я join потом сделал
источник

F

Frankie4Fingers in sql_ninja
Попробуй сгенерировать небольшой набор данных, строк на 10-20 и проверь
источник

F

Frankie4Fingers in sql_ninja
Весь скрипт с генерацией можешь сюда скинуть через
https://pastebin.com/
источник

F

Frankie4Fingers in sql_ninja
@Gubanov151188 куда собеседуешься?
источник

AG

Andrey Gubanov in sql_ninja
Уралсиб
источник

2_

2flower _ in sql_ninja
Andrey Gubanov
@V1nn1 Пока вот так declare @startdate  date = '20180101'
declare @dateoffset date = dateadd(day, -1, dateadd(year, 1, @startdate))

; with sequence(n) as
(
 select 0
 union all
 select n + 1 from sequence
 where n < datediff(day, @startdate, @dateoffset)
),
dates(datecolumn) as
(
 select dateadd(day, n, @startdate)
 from sequence
)
select datecolumn
from dates
order by datecolumn
option (maxrecursion 0) ;
не эффективно. лучше генерировать даты, так при фильтрах будут использоваться индексы, работу лучше оценят
источник

AG

Andrey Gubanov in sql_ninja
Ну вот такой метод нашёл
источник

AG

Andrey Gubanov in sql_ninja
DROP TABLE IF EXISTS  #tOffers
CREATE TABLE #tOffers(
offerID BIGINT IDENTITY(1,1),
offerStartDate DATETIME,
offerEndDate DATETIME)
INSERT INTO #tOffers
VALUES ('20180101','20180304'),
('20180105','20180415'),
('20180205','20180410'),
('20180305','20180715');


;with dates(d) as (
select cast('20180101' as datetime)
union all
select dateadd(day, 1, d) as d from dates where d<='20181230'
)
SELECT t1.d,COUNT(offerid)
FROM
 dates  t1
LEFT JOIN
#tOffers t2
ON
 t1.d
 BETWEEN
 t2.offerStartDate AND t2.offerEndDate
group by d OPTION (MAXRECURSION 32767) ;
источник

2_

2flower _ in sql_ninja
Andrey Gubanov
DROP TABLE IF EXISTS  #tOffers
CREATE TABLE #tOffers(
offerID BIGINT IDENTITY(1,1),
offerStartDate DATETIME,
offerEndDate DATETIME)
INSERT INTO #tOffers
VALUES ('20180101','20180304'),
('20180105','20180415'),
('20180205','20180410'),
('20180305','20180715');


;with dates(d) as (
select cast('20180101' as datetime)
union all
select dateadd(day, 1, d) as d from dates where d<='20181230'
)
SELECT t1.d,COUNT(offerid)
FROM
 dates  t1
LEFT JOIN
#tOffers t2
ON
 t1.d
 BETWEEN
 t2.offerStartDate AND t2.offerEndDate
group by d OPTION (MAXRECURSION 32767) ;
ну вроде все верно на первый взгляд, а что не получается?
источник

AG

Andrey Gubanov in sql_ninja
Этот получился, но мне кажется, что можно проще как-то
источник