Size: a a a

SqlCom.ru - Стиль жизни SQL

2021 January 29

РR

Руслан Ruslan73... in SqlCom.ru - Стиль жизни SQL
Дмитрий Галкин
Вопрос  по MS SQL. Надо преобразовать строку формата "12-DEC-2020" поместить в поле типа date. Пробовал
SELECT cast('12-DEC-2020' as Date)
- Ошибка преобразования даты или времени из символьной строки.
SELECT convert('12-DEC-2020', date, 106)

Та  же ошибка. Что еще можно попробовать?
Может русские символы  в строке?
источник

ДГ

Дмитрий Галкин... in SqlCom.ru - Стиль жизни SQL
Руслан Ruslan73
Может русские символы  в строке?
Сработало. Благодарю. Странно, вроде русских символов не должно быть...
источник

A

Andrey in SqlCom.ru - Стиль жизни SQL
Владислав Литвинюк
Привет! Подскажите, пожалуйста, как можно nvl заменить на стандарт sql? Не могу найти онлайн редактора чтобы даже проверить что конкретно эта функция делает..

WITH original AS (
   SELECT '11111' AS userid, '2020-01-01' AS ttime, 'blog' AS source
   UNION ALL
   SELECT '11111', '2020-01-02', 'organic' UNION ALL
   SELECT '22222', '2020-01-01', 'direct' UNION ALL
   SELECT '22222', '2020-01-02', 'blog' UNION ALL
   SELECT '22222', '2020-01-03', 'direct'  UNION ALL
   SELECT '22222', '2020-01-07', 'google' UNION ALL
   SELECT '22222', '2020-01-08', 'direct'  UNION ALL
   SELECT '66666', '2020-01-01', 'direct' UNION ALL
   SELECT '66666', '2020-01-02', 'blog' UNION ALL
   SELECT '66666', '2020-01-03', 'direct'
),
t as (
   select userid,
          ttime, source,
          nvl(lead(ttime) over (partition by userid order by ttime), '2100-01-01') as next_ttime
   from original
   where source != 'direct'
)
select
   orig.*,
   nvl(t.source, orig.source) as real_source
from original orig
   left join t
       on orig.userid = t.userid
       and orig.ttime >= t.ttime and orig.ttime < t.next_ttime
Nvl (Oracle) это isnull (MSSQL)
источник

ТО

ТаТиана Од in SqlCom.ru - Стиль жизни SQL
Владислав Литвинюк
Привет! Подскажите, пожалуйста, как можно nvl заменить на стандарт sql? Не могу найти онлайн редактора чтобы даже проверить что конкретно эта функция делает..

WITH original AS (
   SELECT '11111' AS userid, '2020-01-01' AS ttime, 'blog' AS source
   UNION ALL
   SELECT '11111', '2020-01-02', 'organic' UNION ALL
   SELECT '22222', '2020-01-01', 'direct' UNION ALL
   SELECT '22222', '2020-01-02', 'blog' UNION ALL
   SELECT '22222', '2020-01-03', 'direct'  UNION ALL
   SELECT '22222', '2020-01-07', 'google' UNION ALL
   SELECT '22222', '2020-01-08', 'direct'  UNION ALL
   SELECT '66666', '2020-01-01', 'direct' UNION ALL
   SELECT '66666', '2020-01-02', 'blog' UNION ALL
   SELECT '66666', '2020-01-03', 'direct'
),
t as (
   select userid,
          ttime, source,
          nvl(lead(ttime) over (partition by userid order by ttime), '2100-01-01') as next_ttime
   from original
   where source != 'direct'
)
select
   orig.*,
   nvl(t.source, orig.source) as real_source
from original orig
   left join t
       on orig.userid = t.userid
       and orig.ttime >= t.ttime and orig.ttime < t.next_ttime
IsNull(t.source, orig.source)
источник

A

Andrey in SqlCom.ru - Стиль жизни SQL
источник

A

Andrey in SqlCom.ru - Стиль жизни SQL
Гугл рулит
источник

ВЛ

Владислав Литвинюк... in SqlCom.ru - Стиль жизни SQL
я думал это postgres, спасибо
источник

ВЛ

Владислав Литвинюк... in SqlCom.ru - Стиль жизни SQL
мне кстати подсказал немножко BQ)
источник

РR

Руслан Ruslan73... in SqlCom.ru - Стиль жизни SQL
Владислав Литвинюк
Привет! Подскажите, пожалуйста, как можно nvl заменить на стандарт sql? Не могу найти онлайн редактора чтобы даже проверить что конкретно эта функция делает..

WITH original AS (
   SELECT '11111' AS userid, '2020-01-01' AS ttime, 'blog' AS source
   UNION ALL
   SELECT '11111', '2020-01-02', 'organic' UNION ALL
   SELECT '22222', '2020-01-01', 'direct' UNION ALL
   SELECT '22222', '2020-01-02', 'blog' UNION ALL
   SELECT '22222', '2020-01-03', 'direct'  UNION ALL
   SELECT '22222', '2020-01-07', 'google' UNION ALL
   SELECT '22222', '2020-01-08', 'direct'  UNION ALL
   SELECT '66666', '2020-01-01', 'direct' UNION ALL
   SELECT '66666', '2020-01-02', 'blog' UNION ALL
   SELECT '66666', '2020-01-03', 'direct'
),
t as (
   select userid,
          ttime, source,
          nvl(lead(ttime) over (partition by userid order by ttime), '2100-01-01') as next_ttime
   from original
   where source != 'direct'
)
select
   orig.*,
   nvl(t.source, orig.source) as real_source
from original orig
   left join t
       on orig.userid = t.userid
       and orig.ttime >= t.ttime and orig.ttime < t.next_ttime
СOALESCE(..., '2100-01-01')
источник
2021 January 30

TA

Tatyana Agalakova in SqlCom.ru - Стиль жизни SQL
Привет, возникла проблема по выводу  данных: есть id, type, name
Нужно вывести топ 10 name по sum(id) ( тут все ясно)
И вывести type по каждому из name
Каким образом это сгруппировать можно? Я делаю все через group by , на кажется делаю какую-то хрень
То есть на 10 name должны быть по 10 type
Это вообще реально?))
источник

AC

Alexey Chaykin in SqlCom.ru - Стиль жизни SQL
Разве что в строку сгруппировать через запятую (string_agg), либо другую агрегатную ф-ю применить
источник

AC

Alexey Chaykin in SqlCom.ru - Стиль жизни SQL
Но вообще суммировать Id звучит странно
источник

D

Damir in SqlCom.ru - Стиль жизни SQL
Alexey Chaykin
Но вообще суммировать Id звучит странно
Я тоже опешил, либо не понимаю что происходит
источник

TA

Tatyana Agalakova in SqlCom.ru - Стиль жизни SQL
Damir
Я тоже опешил, либо не понимаю что происходит
Плохо объяснила, мои извинения!
Id это количество сущностей
источник
2021 January 31

РR

Руслан Ruslan73... in SqlCom.ru - Стиль жизни SQL
Tatyana Agalakova
Плохо объяснила, мои извинения!
Id это количество сущностей
Да уж, неважно объяснили. Что дано и что надо сделать тут  imho понять в разы сложнее, чем написать select. Картинку с данными неплохо бы добавить, описание всех полей, внешний вид результата.
источник

ES

E S in SqlCom.ru - Стиль жизни SQL
Всем привет
такой вопрос может кто подскажет.
Купил курсы начальный на udemy Oracle.
Там есть задачки после блоков но как мне кажется их маловато.
Задачки на данный момент на LIke,Lpad и прочее..
Может кто подскажет ресурс где на функции такого плана есть куча задач что бы "набить руку".?
был бы очень благодарен на ссылки
источник

u

ukki in SqlCom.ru - Стиль жизни SQL
Sql-ex
источник

u

ukki in SqlCom.ru - Стиль жизни SQL
А хотя да, на такие там может и нет
источник

TA

Tatyana Agalakova in SqlCom.ru - Стиль жизни SQL
Руслан Ruslan73
Да уж, неважно объяснили. Что дано и что надо сделать тут  imho понять в разы сложнее, чем написать select. Картинку с данными неплохо бы добавить, описание всех полей, внешний вид результата.
Нужно топ10 производителей на топ10 типов документов
все хранится в одной табличке original
колонки: creator_name, type, count_of_docs
select SUM(count_of_docs), type from original group by type order by SUM(count_of_docs) desc limit 10
select SUM(count_of_docs), creator_name from original group by creator_name order by SUM(count_of_docs) desc limit 10
как сделать такой перекрест я не знаю)
источник

А

Артем in SqlCom.ru - Стиль жизни SQL
Tatyana Agalakova
Нужно топ10 производителей на топ10 типов документов
все хранится в одной табличке original
колонки: creator_name, type, count_of_docs
select SUM(count_of_docs), type from original group by type order by SUM(count_of_docs) desc limit 10
select SUM(count_of_docs), creator_name from original group by creator_name order by SUM(count_of_docs) desc limit 10
как сделать такой перекрест я не знаю)
Через cte
источник