Программирование

Ответить в тред Ответить в тред
А вот и новый оптимизированный баз данных тред, /sql/ Аноним 20/03/20 Птн 23:37:27 16387101
15767555835440.jpg 9Кб, 400x400
400x400

А вот и новый оптимизированный баз данных тред,
в котором мы
-Выслушиваем, почему в шапке по-прежнему отсутствует инфа для вкативания
-Разбираемся, почему PostgreSQL - не Oracle
-Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
-Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обещстве
-Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
-Анализируем, как работает поиск вконтакте
-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны
-И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно

Поехали!
Аноним 20/03/20 Птн 23:38:40 16387122
Гайз, такая ситуация -- не могу выбрать литературу для вкатывания в sql(понадобится мне по работе в будущем)
Может кто-нибудь рассказать свою историю успеха и кто как вообще учился этому ремеслу?
(3 курс-кун)
Аноним 21/03/20 Суб 03:43:21 16388663
>>1638712
>3 курс-кун)
Ты уже работать должен.
Аноним 21/03/20 Суб 09:06:29 16388984
Аноним 21/03/20 Суб 12:56:48 16390285
>>1638712
Алан Бьюли - Изучаем SQL
Аноним 21/03/20 Суб 14:07:00 16390746
>>1638898
Не слушай его, это чмо без ВО. Тебе еще магу надо окончить прежде чем идти куда-то
Аноним 22/03/20 Вск 13:25:01 16398657
>>1639074
А сам что закончил?
Аноним 22/03/20 Вск 13:51:07 16398768
Аноним 22/03/20 Вск 20:15:20 16401819
>>1638710 (OP)
Стоит ли пытаться городить linked list в Postgres или такую хуйню лучше в NoSQL мутить?
Аноним 22/03/20 Вск 20:36:37 164021610
Аноним 22/03/20 Вск 21:39:51 164028311
Аноним 23/03/20 Пнд 04:19:25 164044812
Аноним 23/03/20 Пнд 12:11:37 164058013
Можно ли найти работу после самостоятельного изучения sql, не имея в о по специальности программирование и даже по смежной (в/о гуманитарное). Как относятся к таким людям?
Аноним 23/03/20 Пнд 18:09:19 164086214
Двач, поясни по простому чем mongodb лучше/хуже чем postgresql(ну и вообще sql) и когда что лучше подходит?
Аноним 24/03/20 Втр 22:25:49 164205615
Вкатываюсь в работу со складом, подскажите годную инфу что почитать/посмотреть по складским задачам
Аноним 24/03/20 Втр 22:41:08 164208216
>>1638710 (OP)
Братаны, нужен адекватный механизм для удаления устаревших данных из БД. Можно конечно ставить что-то типа DateField и на сервере каждые n минут проверять разницу между текущей датой и выставленной, если она превысила порог в скажем 30 дней, мы удаляем запись. Но что если сервер ляжет и его время сбросится в ебеня?
Как вообще реализуют удаление устаревших данных в БД (вне зависимости, реляционная это база или noSQL)?
Аноним 24/03/20 Втр 23:01:31 164211917
>>1642082
Нельзя раз в день запускать?

> сервер ляжет и его время сбросится в ебеня
Тогда отсчитывать разницу не от текущей, а от последней добавленной, например, но это при условии, что новых записей с неправильным временем не появляется. А если появляются, то ничего не поделать и придётся при каждом инсерте проверять триггером, что нету более новых записей.
Аноним 25/03/20 Срд 03:21:32 164221218
>>1640580
Если ты о sql курсиках - каким-то джуном дата аналитиком можно.
И то, нужны еще доп. знания. Если прорываться куда-то в банк, телеком то нужно еще немного подчитать о екселе, т.к. без него увы никуда.И хотя бы одном аналитическом пакете (чаще всего Power BI)- важно знать что такие есть и зачем они, остальное - наживное. Типа когда тебя на собесе спросят знаком ли ты с какой-то приблудой, ты не обосрешься, а скажешь типа:
- "Немного опыта, знаю что используется для построения отчётности о количестве собраного говна в секунду"
И обычно этого достаточно для мимоджуна во всякие полулегальные банки.
Если прорываться в айти - то хоть немного подчитать о джире, гугл таблицах. А главное быть в чуть курсе стрима из которого продукт конторы куда ты собеседуешься.
мимо-вкатившийся
Аноним 25/03/20 Срд 08:45:35 164226319
>>1642082
Сделай двойную проверку, вторым запросом проверяй промежуток между удаляемой и текущей, если больше 2 месяцев скажем, не удаляем ничего
Аноним 25/03/20 Срд 10:44:11 164228420
>>1642082

> Но что если сервер ляжет и его время сбросится в ебеня?

Атомный источник, ntp сервер, прописанная в поттердэ синхронизация в момент запуска, всё это в противоядерном бункере в противошоковой камере на подвесах.
Аноним 25/03/20 Срд 15:34:18 164250921
Снимок.PNG 100Кб, 619x527
619x527
>>1638710 (OP)
помогите плес написать (это изи, я знаю, прост нюфаг)
⦁ сосчитать количество сольных артистов, чь альбомы продались тиражом более 1000 (вывести только число).
⦁ отобразить всех исполнителей, в списке жанров которого есть “pop” in it (без дубликатов; необходимые поля: artist, genre).
⦁ выбрать Group leaders (name + surname, date of birth, group name, group description) и их лучшие продаваемые альбомы в 2020 году и количество их песен.
⦁ найти название альбома второго по рейтингу
⦁ добавить песню “World” с genre ID 8 в album ID 2.
⦁ заменить национальность лидера группы с ID 42 на значение: ID 14.

заранее спасибо, анончики
Аноним 25/03/20 Срд 16:00:43 164252322
>>1642509
Вы заебали студенты ебанные, хоть бы блять начал решать для приличия, и спросил что непончтно. Иди нахуй, чтоб тебя отчислили ленивый уебок. Мы не твоя личная армия.
Аноним 26/03/20 Чтв 03:00:00 164288723
image.png 64Кб, 300x254
300x254
>>1638710 (OP)
сап, ночной
обращаюсь ко всем бывалым анонам. какую nosql субд выбрать, при условии, что чаще всего при работе с бд будут выполняться много операций чтения и записи МАЛЕНЬКИХ данных (размером ~10-30 байт)? пока что в гугле нихуя не нашел, но может вопрос будет для кого-то супер очевидным. добра.
Аноним 26/03/20 Чтв 09:31:52 164292924
>>1642887
А как гуглил? Я вот погуглил NoSQL Highload, и вроде возвращает варианты. Даже бенчмарки какие-то
Аноним 26/03/20 Чтв 15:07:07 164312625
Так, пацаны. Поясните для маленьких и тупых чем mongo лучше(хуже) postgres и когда что?

Вообще, какие юзкейсы?
Аноним 26/03/20 Чтв 15:12:14 164313326
>>1643126

Уже ничем, попав в интырпрайз из монги усиленно переделывают обычную реляционную СУБД - уже добавили транзакции, следом и статичная схема появится, а там уже и до нормальных форм недалеко.
Аноним 26/03/20 Чтв 15:17:51 164313727
>>1643133

А в монге сейчас разве нет такого понятия как нормализация?
Аноним 26/03/20 Чтв 15:22:53 164313828
Как поступать если джионишь по полям с разным типом данных? Какой бескпартис? Просто если в джоине конвертить смотрится совсем уж уродливо.

Вот например у меня Duble, нужно сделать джоин к varchar, так мне приходится 2 раза кастить(сначало в инт, чтоб убрать нули, потом уже в текст). Но наверное есть способы получше?
Аноним 26/03/20 Чтв 19:26:57 164337829
как уже научиться щелкать эти джоины?
Аноним 26/03/20 Чтв 19:47:20 164338630
>>1643378
А что у них сложного?
Аноним 26/03/20 Чтв 21:27:49 164351831
>>1643378
>>1643386
Вопрос другой но в тему: как часто JOIN'ы вообще юзаются в SQL-коде?
Аноним 26/03/20 Чтв 21:29:35 164352032
>>1643518
Очень часто. Чем нормализованней - тем чаще.
Аноним 27/03/20 Птн 15:08:59 164393733
Screenshot1.png 16Кб, 724x190
724x190
Screenshot2.png 27Кб, 567x245
567x245
В рот ебал эти олимпиадная задачки на sql-ex.
В прикрепе задание и таблицы текущей схемы.
https://pastebin.com/tkGYpBgF - здесь решение, которое хуй знает как валится.
Хуже всего что на этом дремучем sql-ex при прхождении запроса на второй и третьей базе не показывают результирующие данные, в то время как на всех нормальных сервисах типо leetcode'a и прочих, всегда есть какой-то референс.
Аноним 27/03/20 Птн 17:01:50 164403534
Screenshot1.png 25Кб, 721x231
721x231
Screenshot2.png 5Кб, 251x91
251x91
>>1643937
Чем дальше в лес, тем глубже трясина.
https://pastebin.com/1Eh494wV
В этот раз заговнокодил на славу, с кучей соединений строк и их реверсом, на второй базе выдает меньше на 16 чем нужно, до коле?
Аноним 27/03/20 Птн 19:29:37 164408035
>>1638710 (OP)
Есть какой-то сборник задач по SQL? Желательно онлайн. Ещё лучше с ответами.
Хочу руку набить на запросах.
Например, есть две таблицы, такие-то поля, такие-то данные сделай такую выборку, сделай такую же, но отсортируй данные по дате. Сейчас я спокойно пишу запросы там где нужно, но с гуглом. Надо практики побольше, а сам я ничего особенного из головы придумать не могу.
Аноним 27/03/20 Птн 19:44:37 164408336
>>1643937
>на этом дремучем sql-ex при прхождении запроса на второй и третьей базе не показывают результирующие данные
В факе даже написано почему - чтобы люди разбирались с сутью задачи, а не подгоняли ответы.
Аноним 29/03/20 Вск 14:24:52 164536237

>>1642212
Понятно. Спасибо. Изучаю самостоятельно.
Аноним 29/03/20 Вск 15:45:01 164547938
Аноним 29/03/20 Вск 15:48:52 164548239
Тут есть те, кто выучил язык самостоятельно и уже начали работать?
Аноним 29/03/20 Вск 15:52:09 164548440
>>1643518
Джон - просто объединение. Объединяешь с помощью ключа - того, что есть в любом коде. Объединение может быть тоже разное
Правое, левое, классическое.
Аноним 29/03/20 Вск 18:21:10 164560841
>>1645479
Да, я уже тред почитал, нашёл. Всё равно, спасибо!
Аноним 01/04/20 Срд 14:24:37 164799842
Используется ли в СУБД (например Postres) поиск через хеш-таблицу с быстродействием О(1)? Или это фишка только NoSQL?
Аноним 01/04/20 Срд 14:32:48 164800343
>>1645484
Вопрос в том, как часто это юзается
Аноним 01/04/20 Срд 14:55:20 164802144
Аноним 01/04/20 Срд 14:55:39 164802245
Аноним 01/04/20 Срд 15:40:07 164804146
>>1648022
Почему? Это ж быстро и модно
Аноним 01/04/20 Срд 18:34:49 164814247
Аноним 01/04/20 Срд 21:57:57 164826748
>>1638710 (OP)
Вечер в хату! Че насчет scylladb скажите?
Аноним 01/04/20 Срд 23:24:02 164830949
Строковые функции Аноним 02/04/20 Чтв 02:00:49 164836250
image.png 69Кб, 1466x627
1466x627
>>1638710 (OP)

Двач, сегодня нужно было срочно по-быстрому преобразовать емейлы уровня ivan.petrov@domain.com в фамилии типа Petrov.
Мейлы из списка только двух видов: ivan.petrov@domain.com и, допустим, ivan.g.petrov@domain.com (когда ящики имя.фамилия заняты, то вставляют ещё букву отчества).
Потом фамилию в этом виде при определённых условиях нужно было добавлять к ещё одной строке, но суть в том, что само преобразование получилось очень громоздким.

Я вспоминал и искал все подряд строковые функции и лепил, лишь бы быстрее доделать, и оно таки заработало.
А потом представил ситуацию, что если домен будет нетипичным, или у человека будет двойная фамилия, в общем, всё опять нагромоздится, или пойдёт по пизде.
Приложил этот кусок запроса с прикрученными тестовыми данными. Анон, можешь пояснить за то, как корректно юзать строковые функции, и показать, как это нужно было делать на самом деле?


declare @t as table (
row int
,fio varchar(255)
)
insert into @t
values
(1,'ivan.g.petrov@domain.com')
,(2,'ivan.petrov@domain.com')
,(3,'ivan.petrov@domain.net') -- нетипичный домен
,(4,'ivan.g.petrov.vodkin@domain.com') --нетипичный емейл
--SELECT * FROM @t

SELECT
fio as [login]
,STUFF(

IIF(
LEN(REPLACE([fio],'@domain.com','')) - LEN(REPLACE(REPLACE([fio],'@domain.com',''),'.', ''))=1 --если в логине одна точка, например ivan.ivanov@domain.com
,REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),''),'@domain.com','') -- удаляем всё после первой точки, и реплейсом добиваем @domain.com
,REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),''),'@domain.com','')) -- удаляем всё после второй точки, это на случай, если в логине две точки, например ivan.i.ivanov@domain.com

, 1, 1, UPPER(LEFT(IIF(LEN(REPLACE([fio],'@domain.com','')) - LEN(replace(REPLACE([fio],'@domain.com',''),'.', ''))=1 --если в логине одна точка, например ivan.ivanov@domain.com

,REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),''),'@domain.com','') -- удаляем всё после первой точки, и реплейсом добиваем @domain.com
,REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),''),'@domain.com','')) -- удаляем всё после второй точки, это на случай, если в логине две точки, например ivan.i.ivanov@domain.com

,1))) as [last name]

FROM @t
Строковые функции Аноним 02/04/20 Чтв 02:22:54 164836851
image.png 30Кб, 462x550
462x550
image.png 63Кб, 982x597
982x597
>>1648362
Попытка отвязаться от почтового домена и двойной фамилии нагромождает запрос ещё сильнее, а заменить регистр второй части двойной фамилии мне уже не удаётся.


declare @t as table (
row int
,fio varchar(255)
)
insert into @t
values
(1,'ivan.g.petrov@domain.com')
,(2,'ivan.petrov@domain.com')
,(3,'ivan.petrov@domain.net') -- нетипичный домен
,(4,'ivan.g.petrov.vodkin@domain.com') --нетипичный емейл
--SELECT * FROM @t

SELECT
fio as [login]
,LEFT(
STUFF(

CASE WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=1
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=2
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=3
THEN REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+2),''),'.','-')
END
, 1, 1,
UPPER(
LEFT(
CASE WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=1
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=2
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=3
THEN REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+2),''),'.','-')
END
,1)))
,CHARINDEX('@',

STUFF(

CASE WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=1
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=2
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=3
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+2),'')
END
, 1, 1, UPPER(LEFT(CASE WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=1
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=2
THEN STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+1),'')
WHEN LEN(LEFT([fio],CHARINDEX('@',[fio],1)-1)) - LEN(REPLACE(LEFT([fio],CHARINDEX('@',[fio],1)-1),'.', ''))=3
THEN REPLACE(STUFF([fio], 1,CHARINDEX('.',[fio],CHARINDEX('.',[fio],0)+2),''),'.','-')
END
,1)))

,1)-1) as [last name]

FROM @t
Аноним 02/04/20 Чтв 02:28:29 164836952
блядь, налипло табуляций
Аноним 02/04/20 Чтв 16:52:28 164858953
Приветствую, двощане
вопрос следующего характера: существует Data Grip (предположу что это СУБД от jetbrains)
Друг накатал там пару таблиц в полноценную базу, скинул архив на облако, я скачал
а теперь выяснил, что не могу "открыть" папку как проект точнее могу но потом на стадии визуацизации таблиц вижу говно
В теории разбираюсь очень неочень, если пишу не туда пошлите куда надо пж

Аноним 03/04/20 Птн 05:38:48 164899554
>>1648362
Чото ты хуйни нагородил, я б за такое пидел ногами но я сам тоже из этих. Простой сделай split.
Аноним 03/04/20 Птн 05:39:30 164899655
Аноним 03/04/20 Птн 05:42:09 164899856
>>1648589
Чтоб её открыть нужно чтоб был сделан нормальный экспорт или на худой конец бекап, просто так что-то открывать заебешься.
Аноним 03/04/20 Птн 10:23:06 164910857
Что почитать по postgis?
Попал на проект, где эта шняга используется во всю, а я нихрена в ней не понимаю
Аноним 03/04/20 Птн 12:06:11 164917858
Товарищи, перевели в новый проект, там юзают Oracle. Ранее работал с MS SQL, чутка с Postgres и Mysql.
Есть какой-то материал для быстро входа в Оракл? Я понимаю что основные концепты остаются те же, но есть ведь нюансы. Особенно интересует вопрос взаимодействие с БД, администрирование, какие тулы есть, каким клиентом лучше пользоваться и структура СУБД как таковой.
Аноним 03/04/20 Птн 13:01:14 164921459
>>1649178
Тут никто не хочет отвечать на вопросы по вкату, только одни сеньоры ДБА сидят и иногда помогают друг другу с ебически сложными задачами.
Аноним 03/04/20 Птн 13:10:27 164921860
>>1649178
У меня оракл на соседнем проекте, иногда приходится с ним взаимодействовать. У меня срака перманентно горит из-за отсутствия стандартных функцией скуля(банально TOP). Взаимодействие через Oracle SQL Developer( ну тебе там местные ораклиытсы должны пояснить за это говно).
Аноним 03/04/20 Птн 17:01:02 164938461
>>1648998
в общем скажу так. я смог открыть ее и могу например визуализировать таблицы, но при попытке выполнить любой тест запрос (селект какой-нибудь например) получая ошибку в ебало
Аноним 03/04/20 Птн 19:35:02 164950762
>>1649178
Не слушай того неосилятора, у оракла есть все, что есть в ANSI.
PL/SQL developer тебе будет лучше, как новичку, но нужно будет настраивать клиент, в инете инфы полно.
Насколько быстрый и глубокий вкат ты хочешь? Можешь гуглить transact top oracle, а можешь посмотреть часов 45 лекций Игоря Мирончика, выбор за тобой.
Аноним 05/04/20 Вск 13:54:15 165061963
Какая структура БД у имиджборды?
Аноним 05/04/20 Вск 14:00:18 165062564
>>1650619
bordy - tready - posty - anonimnyje_usery
Аноним 05/04/20 Вск 14:01:49 165062865
>>1650625
А как ID у постов и тредов на разных досках автоинкрементируются обособленно друг от друга?
Аноним 05/04/20 Вск 14:10:07 165063466
>>1650628
Скорее всего, настоящий ID мы не видим, и он, да, уникальный. Но кроме него есть ID борды и номер сообщения, уникальный в разрезе одной борды и инкрементящийся каким-нибудь триггером, типа
post_nomer := select max(post_nomer) + 1 from posty where borda_id = :borda_id;
Аноним 05/04/20 Вск 15:03:57 165067867
>>1650634
Это получается на каждый новый пост вся таблица с постами просматривается и ищется самый большой номер поста, не жирная операция на практике?
Аноним 05/04/20 Вск 15:11:15 165068868
>>1650678
Если создать индексы, максимум будет искаться за O(1).
Аноним 05/04/20 Вск 15:25:09 165072169
Аноним 05/04/20 Вск 15:49:47 165075270
>>1650721
Да уж.
Вам мама о сиквенсах не рассказывала в детстве?
Аноним 05/04/20 Вск 16:15:40 165079571
Как в монго правильно хранить мультиязыковые данные?
Аноним 05/04/20 Вск 16:36:56 165083472
Где почитать о нормализации БД? Статьи, на которые натыкаюсь содержат овердохуя инфы об этих нормальных формах, приправленной линалом и матаном
Где сказано о практическом применении нормализации?
Аноним 05/04/20 Вск 17:00:38 165087273
>>1650834
Берешь без задней мысли смотришь все видосы подряд пока не поймешь так с любым материалом
Аноним 05/04/20 Вск 17:38:13 165092774
>>1650752
По сиквенсу на каждую борду, да? Ок.
Аноним 05/04/20 Вск 18:10:30 165098675
>>1650927
Любое хранилище с несколькими тысячами справочников и сиквенсами на каждый сейчас в голос проорали.
Ты серьезно? Ты думаешь, что на каждую из, пускай, сотни, досок сделать сиквенс - это затратно?
Аноним 05/04/20 Вск 18:30:51 165101976
>>1650986
Можно и по таблице тогда создавать.
Аноним 05/04/20 Вск 18:34:53 165102577
>>1651019
А ты сообразительный.
Аноним 05/04/20 Вск 18:56:37 165105978
Аноним 05/04/20 Вск 23:45:44 165140479
>>1650834
Введение в системы баз данных К. Дж. Дейт
Аноним 06/04/20 Пнд 15:53:02 165185880
>>1638710 (OP)
Как прокачать знания в базах данных? Все эти уровни изоляции транзакций, написание сложных SQL запросов, тюнинг SQL запросов, индексы и как их правильно создавать, администрирование и тюнинг СУБД.
Аноним 07/04/20 Втр 11:28:31 165244081
>>1651858
Ты не поверишь - решать задачки.
Делаешь стенд и хуяришь, потом устраиваешься на работу и там хуяришь.
Аноним 07/04/20 Втр 11:43:28 165245082
>>1652440
Хватит какого-нибудь постгреса запущенного в докере и документации к нему?
Аноним 07/04/20 Втр 12:28:48 165247483
>>1652450
Ну задачки таки лучше нарыть отдельно.
Аноним 08/04/20 Срд 13:12:54 165334884
>>1652450
Вполне себе достаточно должно быть

Почти для всех вопросов "что почитать по базам данных, индексам и т.д." есть один универсальный ответ - книга Томас Кайт "Oracle для профессионалов".
Качаешь, читаешь те главы, которые тебе нужны/кажутся интересными. При необходимости возвращаешься и перечитываешь/смотришь видосы на тытрубе.

Сразу ответ на вопрос "но книга же по ораклу, а у меня postgresql/mysql/mssqlserver" - у всех самых популярных бд почти идентичный набор функционала. Знание того же оракла дает понимание, что можно сделать в любой другой субд, детали нагуглить не проблема.

Кстати, oracle для docker тоже есть.
Адекватные и релевантные знания по администрированию/тюнингу/уровням изоляции и возникающим с ними проблемам приобретаются только опытным путём в работе. Но теория всегда не помешает.
Аноним 09/04/20 Чтв 03:21:42 165386385
Правильно ли я понимаю, что OUTER JOIN'ы вернут то, что вернул бы INNER JOIN, плюс (возможно) строки с NULL'ами?

То есть что нельзя пропустить нормальную здоровую строчку без NULL'ов, используя INNER JOIN?
Аноним 09/04/20 Чтв 04:33:36 165387286
>>1653863
Ты outer с left перепутал.
Аноним 09/04/20 Чтв 05:34:00 165387687
>>1653872
Под outer' я имел в виду и left, и right, и full.
Аноним 09/04/20 Чтв 06:08:17 165388088
>>1653876
Ну типо да, ты такой джоинишь, джоинишь, а там хуяк NULL


tabl1.pole=1 >>>>>>>>>>> tabl2.pole=1
tabl1.pole=2 >>>>>>>>>>> tabl2.pole=2
.......
tabl1.pole=1 >>>>>>>>>>> tabl2.pole=нет такого....
И тут скуль такой: Эсукабля, чо это такое, пошёл нахуй!
И выкидывает строчку. А если ты ему слева\справа хук ебашишь, то он не выкидывает, говорит , Я ВСЁ ПОНЯЛ и добавляет её в результирующий набор.
Аноним 10/04/20 Птн 12:27:15 165468289
изображение.png 11Кб, 742x380
742x380
изображение.png 10Кб, 542x272
542x272
изображение.png 16Кб, 587x223
587x223
Не знаю туда ли зашел. Но проблемы в майрософт access. Создаю таблицы и пытаюсь их связать в "схеме данных". Связываю пункт с типом данных "счетчик" (пик1), он одинаков в нескольких таблицах. Когда связываю пик2, то ошибка пик3 происходит. Пункты эти одинаковы во всех таблицах, с одинаковыми параметрами. Пробовал связывать как до заполнения и любого вмешательства, так и после - результат пик3 всегда.

Хотя есть одно но, если я уберу галки "каскадное обновление связанных полей", и "каскадное удаление связанных полей", оставив только "обеспечение целостности данных", то получается создать связь, но мне те галки нужны. Что делать?
Аноним 10/04/20 Птн 12:43:06 165468590
>>1654682
Тип данных проверь
не лезь дебил, зачем тебе этот ассес?
Аноним 10/04/20 Птн 12:54:19 165469391
изображение.png 8Кб, 512x231
512x231
>>1654685
> Тип данных проверь
Проверил. Везде как на пикрил. Тип "счетчик", длинное целое, последовательное.
> не лезь дебил, зачем тебе этот ассес?
По учебе надо именно в нем делать
Аноним 10/04/20 Птн 12:54:55 165469492
изображение.png 13Кб, 957x399
957x399
>>1654693
Не влезли нижние параметры на скрине
Аноним 10/04/20 Птн 20:31:54 165503993
Screenshot from[...].png 50Кб, 1032x270
1032x270
Аноны, есть вот такие данные, как правильно спросить гугл, или анона, о том, как бы эти данные сгенерировать в то что выше указано?
PSQL, если что.
Аноним 10/04/20 Птн 20:33:19 165504394
>>1655039
То есть из 4 строк данных, надо сгенерировать одну(и немного переработать), с полным содержанием инфы по юзеру.
Аноним 11/04/20 Суб 00:53:35 165521995
>>1655043
Не думаю что с этим говном кто-то будет разбиратьса тут. Приходите с вопросом по sql здорового человека.
Аноним 11/04/20 Суб 04:41:12 165531996
>>1655219
Ну меня больше интересует подход + немного кода(или хоть куда копать).
Неужели такая агрегация - что-то странное и необычное?
Аноним 11/04/20 Суб 06:44:31 165533897
>>1655319
Да это параша гавно мамонта, там не кода, не инструментов, нихуя нет, какой-то костыль уровня 1с. Попробуй не через меню, а запросом сделать, оно должно понимать sql.
Аноним 11/04/20 Суб 06:46:21 165533998
>>1655319
А сори анон, я думал это та история с ассес, не рассмотрел скрин
Аноним 11/04/20 Суб 07:05:16 165534199
>>1655039
Тебе надо развернуть данные?
То есть, например, у него channel есть и Instagram, и Twitter - надо сделать в результате запроса два столбца?
Типа
Id1 Instagram
Id1 Twitter
->
Id1 Instagram Twitter

Pivot или max(case) может тебе помочь.
Аноним 11/04/20 Суб 07:06:55 1655342100
>>1655339
>>1655039
Вот как то так, но это tsql, для оракла надо будет поправить.


Немного не ясна задача, предположу что:
-первые две строчки без изменений
-если конвертед 1, иначе 0
-условия для клика
-только инстаграм
-только ифон




SELECT
customer_user_id,
country_code,
iif([event_name]=1,1,0),
CASE
WHEN attributed_touch_type=click THEN 0
WHEN attributed_touch_type=impression THEN 1
ELSE 2
END,
cahnnel,
device_type
FROM dbo.govno
WHERE channel='instagram'
and device_type='Iphone'
Аноним 11/04/20 Суб 07:10:15 1655344101
>>1655342
Там анон выше писал что ты пивот хотел..Или не пивот а строчку собрать..Или просто данные в таком формате? Объяснитесь, сударь!
Аноним 11/04/20 Суб 14:06:58 1655652102
Как вы запоминаете это? Серьезно. Я учил неделю назад операторы, прорешал задачи (успешно), сегодня открыл - все словно с нуля, позабыл все эти слова и операторы. Вспомнилось, конечно, но без напоминаний - ноль.
Аноним 11/04/20 Суб 15:28:56 1655706103
>>1655652
для закрепления решать задачи нужно, память так работает.
Аноним 11/04/20 Суб 17:55:33 1655869104
>>1655706
Я решал, причем хорошо, но забыл синтаксис. Серьезно.
Аноним 11/04/20 Суб 17:57:39 1655870105
>>1655652
Надо пользоваться на практике. Что не используется - вытесняется из памяти.
Аноним 12/04/20 Вск 10:55:12 1656273106
2ср.png 2239Кб, 2048x1940
2048x1940
Что-то половина вопросов в тхреде от студентов, которые получив ответ даже спасибо не скажут, или сьебывают просто запостив свой покак. Предлагаю более не отвечать этим пидорам.
Аноним 12/04/20 Вск 18:00:48 1656577107
image.png 28Кб, 1012x188
1012x188
image.png 38Кб, 1096x206
1096x206
>>1655344
Я хотел из 4 строк получить одну строку.
Учитывая что юзеров много и у каждого такой набор параметров о них как на скрине, эти их кучи строк хочу в одну склеить, заменив эти их "триалы/конверты" и прочее на отдельные столбцы с 0(не было такого действия) / 1(было действие).
Как-то так.
>>1655341
Скорее свернуть надо, сделав и N строк о юзере одну строку с кучей столбцов.
Спасибо, почитаю про эти штуки.
>>1655342
Немного не подходит.

Вот такой код сейчас сделал - https://pastebin.com/nvXKEQzg
В результате пик 1 из пика 2 получается.
Хотя пытаюсть получить строку вида:
"NL04XU2GiATNXRaQSZ3...." | "iPhone 8 Plus" | "CA" | 1 | 1 | 1 | 2 | "female"
Аноним 12/04/20 Вск 18:07:00 1656583108
>>1656577
Из N строку одну с кучей столбцов.
Ну все правильно, тебе надо развернуть таблицу.

select id,
max(decode(param, 'param1', value)) as param1, ...,
max(decode(param, 'paramN', value)) as paramN
from table
group by id

У тебя на каждую строку останется только одно заполненное значение в столбце, а max их схлопнет.

Проблема в том, что много хардкодить надо.
Или заводить справочник, по которому динамически будет строиться запрос.
Аноним 12/04/20 Вск 18:15:36 1656589109
>>1656583
> Проблема в том, что много хардкодить надо
Это да, но набор столбцов не окончательный, сейчас пытаюсь найти какие-то зависимости и выбрать нужные мне данные.
Спасибо, антош, буду пробовать.
Аноним 12/04/20 Вск 18:16:40 1656590110
Работаю ETL разрабом, 170 тыщ на руки в ДС. 29 лет
Стек - sql server,teradata
Ну и SSIS,Pentaho и прочая залупа
Игогда переписываю или пишу процедуры и прочую хуету

Куда двигаться дальше - хз

Как выбраться из говна, пойти в HADOOP и начать учить Джаву...
Аноним 12/04/20 Вск 18:31:40 1656598111
>>1656583
> max(decode(param, 'param1', value))
Но в PostgreSQL такого нет, а у меня именно он, эхъ.
Аноним 12/04/20 Вск 18:42:06 1656601112
>>1656590
170к в ДСах за написание sql разве не ок?
Какие вопросики на собесе были?
Аноним 12/04/20 Вск 18:44:44 1656602113
>>1656583
Хух, все сделал как надо теперь заебись все работает, спасибо, антош, еще раз.
Аноним 12/04/20 Вск 19:12:00 1656622114
>>1656601
Это слишком тупая работа
и там не чисто SQL
Еще ETL
Аноним 12/04/20 Вск 19:13:27 1656623115
>>1656622
Вопросики:

Написать модуль на t-sql, который позволить сотворять элементарные действия с таблицами

Проверки, тригеры и тд

Набор хранимок/функция/тригеров
Аноним 12/04/20 Вск 19:14:18 1656625116
>>1656623
Но это все просто

Гораздо сложнее решать тупые задачи на sql-ex
из постов 1643937 и 1644035
Аноним 12/04/20 Вск 19:55:06 1656640117
>>1656598
>>1656602
Просто decode писать с телефона короче, чем case.

Грац, анонче, рад, что помог.
Аноним 13/04/20 Пнд 09:21:03 1656855118
Антуаны такой вопрос.

Есть таблица вида

Имя | Поле1 | Поле2 | Поле3 | ID


В таблице есть одинаковые строки с разными ИД. Скажем есть ИД 2 и ИД 3, в рамках этих ИД есть одинаковые строки отличающиеся только ИД, так же есть много других строк\ид, которые не повторяются, пересечения только в рамках строк у которых ИД 2 и 3.
Соотвественно мне нужны строки с ИД 2, которых нет в ИД 3. Вроде как просто решается подзапросом, но какой-то топорный метод, нельзя ли что-нибудь поизящней с OUTER JOIN прикрутить?
Аноним 13/04/20 Пнд 09:43:39 1656861119
>>1656855
Вот пока так:

SELECT *
FROM dbo.govno
WHERE ID=1
and Имя not in
(SELECT Имя
FROM [хд_в].[Пункт]
WHERE ID=2)
ORDER BY Имя, ID


Опять же пока все наименования уникальны в пределах ИД, но нет гарантии что так же и сотанеться.

Аноним 13/04/20 Пнд 12:14:47 1656925120
>>1656855
На

Select t1.*
From tab t1
left join tab t2
On t1.имя+поле+поле2+поле3= t2.имя+поле+поле2+поле3

Where t2.id is null
Аноним 13/04/20 Пнд 15:42:58 1657059121
изображение.png 33Кб, 371x236
371x236
>>1656925
Ну это тоже говно какое-то. Есть же наверное более изящный способ через intersect какой-нибудь. Смотрим пересечение ИД 2 и 3, а потом выбрасываем их.
В таблице есть уникальное поле с ключем, т.е идентифицировать уникальную запись можно, нужно только найти общие элементы.
Аноним 13/04/20 Пнд 19:18:08 1657230122
>>1656855
select
имя,
поле1,
поле2,
поле3
from dbo.govno
group by имя,
поле1,
поле2,
поле3
having count(case when id = 2 then 1 end) > 0
and count(case when id = 3 then 1 end) = 0
Аноним 14/04/20 Втр 14:03:16 1657727123
>>1657230
хм, вот это уже поинтереснее.
Сеньёры, ещё будут варианты?
Аноним 14/04/20 Втр 14:28:48 1657736124
>>1656855
select id2, name, f1, f2, f3 from (
select name, f1, f2, f3 from t where id = id2
minus
select name, f1, f2, f3 from t where id = id3
);
Аноним 14/04/20 Втр 21:08:53 1657986125
Я ещё раз повторю свой вопрос: как вы это запоминаете? Бывает ли так , что забыли простейший оператор, забыли, какие кавычки пишутся, как вчера решили задачи и т д?
Аноним 14/04/20 Втр 21:11:44 1657990126
>>1657986
пишешь каждый день - и все!

ну хуй знает как это можно забыть...
Аноним 14/04/20 Втр 21:17:46 1657997127
>>1657990
То есть это редкость, недели правило, забыть, что такое except, union и т д при обучении?
Аноним 14/04/20 Втр 21:18:10 1657998128
Аноним 15/04/20 Срд 04:07:01 1658148129
>>1657997
Вообще ты не учел главного.
Sql планировался как язык для домохозяек менеджеров, потому почти все его конструкции очень логично звучат и так же логично переводятся на родной тебе язык. Это касается как и принципа работы, так и принципа вызова/написания этих конструкций.

Ты же не используешь каждый день все слова из своего лексикона, но когда встречаешь - понимаешь, что знаешь это слово.
Аноним 15/04/20 Срд 10:29:22 1658221130
>>1658148
Ага, особенно логично и просто всякие WITH OVER PARTITION.
Аноним 15/04/20 Срд 10:58:56 1658236131
Аноним 15/04/20 Срд 19:58:39 1658635132
>>1658221
А что не так?
Ну серьезно.
With - с. Такой таблицы нет, теперь будто бы с ней в схеме.
Over - над. Если бы ты смотрел аналитические функции плотнее, то вместе с partition(сиречь, группировкой, частью) и range/rows beetween все очень просто и интуитивно понятно - операция над диапазоном.
Partition - та же часть - в контексте деления таблиц тоже очень простая формулировка.
Аноним 16/04/20 Чтв 16:30:33 1659205133
Как из таблички на 2 поля amount (float), inserted (datetime) вытащить сумму amount за период от/до, но не простой, а разбитый на N частей?

Юзкейс - интерфейс дающий возможность посмотреть amount за произвольный период с произвольной разбивкой. Основные варики: каждый месяц в году, каждую неделю в году, каждый день в месяце, каждый день в неделе, каждый день в две недели, каждые 12 часов в неделе, каждый час в день, каждые два часа в день и т.д.
Аноним 16/04/20 Чтв 22:45:34 1659553134
image.png 121Кб, 211x239
211x239
Привет всем.
У меня есть некий рест, который должен отдавать только изменения в базе данных по запросу пользователя. Что то вроде long pooling или вебхуков.
Мне кажется что я делаю велосипеды, когда навешиваю на бд триггеры или каждую минуту отправляю селекты.
Для этого существует ORM или это как-то по-другому проще можно сделать? Типа контроля версий бд?
Аноним 17/04/20 Птн 06:18:16 1659682135
>>1659553
Эм, ну пользователь спрашивает отдаешь ему все данные старше 5 часов например, и обновляешь переменную, чтоб в следующем запросе показало только то что обновилось с прошлого.
Аноним 17/04/20 Птн 06:21:12 1659683136
>>1659205
Я хз, но звучит как дохуя кода. Сначало тянем общие данные за период, а потом в зависимости от потребности режем их. Соответсвенно на каждую фракцию своя обработка, процедура на вход принимает период и фракцию, отдает результат.
Аноним 17/04/20 Птн 07:24:14 1659701137
>>1659553
А как эти данные меняются? Что мешает тебе при изменении данных, на уровне DAL создавать копию тех, что ты отдаешь пользователю и при запросе использовать её?
Аноним 17/04/20 Птн 11:45:23 1659857138
>>1659205
Что пришло в голову,

Пользователь указывает год, месяц или неделю
или то и то

в sql servere есть функции, которые возвращают:
месяц
номер недели

Как это будет выглядить?

В почем понимании пользователь хочет посмотреть данные за 2020 и 33 неделю

where year(datetime)=2020 and wk(datetime)=33

Вот тебе и нужный результат
Но у тебя будет несколько кейсов поведений пользователя, тебе придется писать запрос на каждый кейс
Аноним 17/04/20 Птн 11:49:49 1659864139
>>1659857
Хуйню я пишу невнятную с утра пораньше

каждый месяц в году,
select day(твоядата),sum(твоеполе)
from t
where year(твоядата)=&Значение пользвателя
group by day(твоядата)

каждую неделю в году
select wk(твоядата),sum(твоеполе)
from t
where year(твоядата)=&Значение пользвателя
group by wk(твоядата)


каждый день в месяце
select day(твоядата),sum(твоеполе)
from t
where year(твоядата)=&Значение пользвателя and mounth(твоядата)=&Значение пользвателя
group by day(твоядата)

Продолжать не буду
Аноним 17/04/20 Птн 11:52:19 1659866140
>>1659205
Давненько сикуль не трогал, но что мешает написать что-то наподобии
SELECT
bucket(inserted),
SUM(amount)
FROM mytable
GROUP BY bucket(inserted);
где bucket - функция конвертирующая дату в некоторое значение для последующей группировки (для годов - получение года из даты)?
Аноним 17/04/20 Птн 11:54:33 1659870141
>>1659553
В запрос передаешь дату последнего запроса и отдаешь всё что после неё. Вопрос лишь в том, кто хранит эту дату - сервер или сам клиент?
Аноним 17/04/20 Птн 20:54:27 1660344142
>>1659682
>>1659555 →
Я хуево обьяснил , что мне надо наверное
например, я удаляю из таблицы запись с primary key = 5, мне бин, который слушает бд отправляет post запрос с Json {table: tablename, primary key: 5, status: deleted}
Или добавляю новую запись, мне «бин» шлёт Json {table: tablename, primary key: 5, status: added}
Или меняю запись, мне «бин» шлёт Json {table: tablename, primary key: 5, column_changed: new_value, status: changed}
Что-то типа того, только не опрашивать бд каждую %period_time, а чтобы непрерывный мониторинг был и не нагружать бд кучей запросов. И не писать велосипедов самому.
Аноним 18/04/20 Суб 04:51:33 1660642143
>>1660344
Звучит так будуто тебе нужно читать лог. Тоже самое что писали выше, но параллельным запросом к жрналу с таблице с логом. Хз может из журнала транзакций это тянуть, не щнаю какая там структура .
Аноним 19/04/20 Вск 14:47:06 1661876144
>>1660344
Это прямо то, для чего создавалась Kafka. Просто пишешь в неё нужные действия при изменении БД, а клиентами вычитываешь их.
Есть готовые коннекторы к БД (для postgres, например), которые как раз занимаются тем, что пишут из коммит лога в кафку.
Аноним 19/04/20 Вск 17:10:15 1662067145
Интересно, есть ли такая база данных.

Нужна условная streaming аналитика.
База данных должна держать определенное окно данных (FIFO).
И иметь продвинутое апи, позволяющее хитрые выборки с встроенными статическими функциями.

Кроме spark.
Аноним 20/04/20 Пнд 09:51:18 1662615146
>>1659553
У оракла для мониторинга изменений прямо в базе есть FGA.
Аноним 20/04/20 Пнд 14:48:39 1662887147
Аноны как забирать данные с веб?
Аноним 20/04/20 Пнд 15:33:27 1662952148
>>1660344
Если производительность не критична, и объектов мониторинга немного, то триггеры вполне рабочий вариант, до появления логической репликации часто так и осуществляли мониторинг изменений.
Иначе следует смотреть в сторону репликации-чтения логов транзакций, если требуются именно измененные данные, как написали выше. Если достаточно запроса направленного в базу, то можно попробовать подцепиться к логам базы.
Но последние два варианта скорее всего не будут простыми, так как репликация в большей степени нацелена на запись в стэндбай. Полученные данные от потока репликации вероятно придется самому парсить, и отслеживать прогресс чтения логов, так как не все базы отдают информацию транзакционного лога в user-friendly формате
Аноним 22/04/20 Срд 06:07:05 1664223149
Такая задача. Краулятся несколько сайтов периодически, записи в базе типа site,url,type,scrape_date.
Надо генерировать статистику на каждую дату - сколько для каждого сайта было записей каждого типа + разницу с прошлой датой. Сколько каждого типа добавилось, сколько уменьшилось.
Вот это последнее надо как-то эффективно реализовать.
Я наколхозил такое и оно работает, но медленно, и с ростом количества записей всё медленнее. Каждый раз добавляется в районе 50к записей.
https://pastebin.com/2wHX7ATd
Аноним 22/04/20 Срд 08:46:12 1664249150
>>1664223
в СУБД только два способа решения проблем:
1. навешивание дополнительных индексов
2. предвычисления

используй п.2. не используй group by,но вычисляй эти самые факты и храни в отдельной таблице.
Аноним 22/04/20 Срд 09:12:51 1664265151
>>1664249
Был такой вариант, но может есть попижже быстро вычисляемое решение.
Аноним 22/04/20 Срд 10:20:18 1664288152
>>1664265
чтобы вычислить результат группирующей функции, нужно вычислять результат группирующей функции!
блядь. куда еще быстрее?

разумеется, ты можешь попытаться оптимизировать группировку индексами, но суть от этого не меняется.
поэтому, если данных действительно будет много, лучше сразу заняться предвычислениями при обновлениях.
Аноним 22/04/20 Срд 19:19:39 1664856153
>>1664223
Индекс на (site, scrape_date) есть?

>t2.id IS NULL
Это ещё откуда взялось и зачем нужно? Пишешь нам одно, а делаешь другое - так проблему сложно будет решить.
Аноним 22/04/20 Срд 19:40:28 1664877154
>>1664856
Индексы есть, да.

> Это ещё откуда взялось и зачем нужно? Пишешь нам одно, а делаешь другое - так проблему сложно будет решить.
То же самое. Идея такая - два подзапроса за разные даты джойнятся между собой по урлу и выбираются только те, где нет соответствия.
Т.е. если такой запрос сделать на date1,date2, то будут только исчезнувшие, а если date2 date1, то только новые.
Аноним 24/04/20 Птн 11:21:09 1666210155
>>1664223
Что за база? План запроса есть? Железо какое?
Не пробовал аггрегацию по всей таблице в разбивке по дням делать?
Попробуй партиционирование по дате добавить !вместо индекса.
Аноним 25/04/20 Суб 17:18:55 1667268156
>>1648003
В 95% запросов, говорю тебе со стороны дата анализа, тебя даже на собес не пригласят если джоинов и юнионов не знаешь.
Аноним 25/04/20 Суб 17:23:34 1667272157
>>1645362
Задавай вопросы что интересно. Я тоже с гуманитарным высшим, таких перекатившихся куча, ни разу за 6 лет никто даже не пошутил об образовании и должности.
Аноним 25/04/20 Суб 19:12:39 1667379158
>>1667272
Интересуются ли прошлым опытом?
Есть ли возможность карьеры при усердии и трудолюбии?
Коллектив какой? Не бывает ли конфликтов? Дружелюбные ли?
Как проходит собеседование? Тяжело ли было?
Аноним 25/04/20 Суб 20:02:31 1667453159
>>1667379
>Интересуются ли прошлым опытом?
А о чём спрашивать если ты перекатываешься, лол. Разве что, если будут какие-то интересные моменты в твоём прошлом опыте(матан, языки) - то спросят. Запомни, когда джуна спрашивают о чём-то на собесе то это 100% чтобы прощупать теор.базу, а не чтобы завалить. Сам собеседовал 2х джунов.
>Есть ли возможность карьеры при усердии и трудолюбии?
Карьера в классическом понимании в IT отсутствует, здесь всё просто, если ты справляешься с задачами определённой сложности - ты растешь и похуй что ты всего пол года работаешь. Даже если прошло 3 года, а ты всё еще джун, значит ты тупой ты на своем месте.
>Коллектив какой? Не бывает ли конфликтов? Дружелюбные ли?
По деффолту, все очень дружелюбные, трудно быть быдлотой и кодить одновременно. Конфликты могут быть только по рабочим вопросам и то они больше смех вызывают.
>Как проходит собеседование? Тяжело ли было?
Первое - очень волновался, последующие на раслабоне. От тебя не требуется внимательности, просто будь собой, твои знание сами всё сделают если они есть.
Аноним 25/04/20 Суб 20:52:53 1667515160
>>1667453
Спасибо. Ты довольно сильно обнадежил меня и успокоил.
А ты с чем вкатывался? Изучал самостоятельно?
Аноним 25/04/20 Суб 21:24:52 1667561161
>>1667515
Решил вкатываться в дата аналитику, когда это даже не было мейнстримом. Итого, сам дома выучил запросики SQL, внезапно ексель, и буквально немножечко питона, на уровне первых 10 уроковэто было очень важно, чтобы дать понять что хочу развиваться. На собесе спросили меня:
1. Обьяснить что такое join в sql и зачем он
2. формулу ВПР из екселя
3. Понимаю ли я что делает продукт компании. Да этот вопрос будут задавать часто, чтобы понять насколько ты адекват.
Считай вкатывался я с 0. Мат образования - не было.
Самостоятельно изучал, какие-то рандомные курсы sql и обязательно задачи на сайте sql-ex. Послушал курс по Data science на курсере. Звонил бывшей коллеге в моб.оператор, она стала нач.отдела уже, говорит что нету джунов с хорошим знанием SQL. Уже полгода не могут найти. Я в геймдеве - у нас так-же, искали джуна, приходит куча народу но с SQL мало. Кароч в первую очередь учи запросики и дерзай.
Аноним 25/04/20 Суб 21:40:56 1667593162
>>1667561
Зачем нужна реляционная модель? Для ускорения?
Аноним 25/04/20 Суб 23:32:53 1667679163
>>1667561
А в каком возрасте ты вкатился?
Аноним 26/04/20 Вск 00:25:07 1667723164
>>1667679
В 25, до этого дома сидел на двачах и игры ганял.
>>1667593
Лол, как минимум чтобы была связь в данных. Типа чтобы таблицы "покупатели" и "магазины" небыли просто отдельно стоящими таблицами и между ними была логическая связьай_ди покупателя.
Аноним 26/04/20 Вск 03:49:56 1667783165
>>1667723
А что почитать посоветуешь?
Аноним 26/04/20 Вск 16:17:41 1668119166
>>1667783
Даже не знаю что посоветовать, я хуевый советчик в этом плане, проходил курсы и читал стак. И ты тоже так делай.
Аноним 26/04/20 Вск 20:53:48 1668360167
>>1667561
А какая твоя первая специальность?
Аноним 26/04/20 Вск 23:14:43 1668515168
>>1668360
По сути - у меня не было никакой специальности когда я вкатывался.
Меня засунули учиться на финансиста, но я и дня ним не проработал. И не смог бы. После выпуска 4 года откисал дома, родители выпирали работать, пошел устраиваться дата аналитиком, начитался много о этом. До этого прошел кучу курсов дома. Не прошел 2 собеса. Подтянул то на чём сыпался, и смог пролезть аналитиком в FMCG. Очень заебывали на собесах вопросом что я делал 4 года после выпуска- отвечал, что фрилансил. Это отчасти правда, но фрилансил не по аналитике.
Аноним 27/04/20 Пнд 00:42:59 1668566169
Аноним 27/04/20 Пнд 00:50:36 1668571170
>>1668515
Ну финансист - это жк не гуманитарная специальность
Аноним 27/04/20 Пнд 02:27:18 1668610171
>>1668571
Как сказать, тех ключевых областей чтобы комфортно чувствовать себя в айти и развиваться - на должном уровне или вообще, в курсе не было. Да может были какие-то интересные моменты по эконометрике но не более. Да и вуз далеко не топовый был.

>>1668566
Никогда не помнил этого. Да и сейчас не вспомню. Стараюсь забыть тот период. Когда вношу куда-то инфу о годе окончания вуза, бомблю +\- 2 года.
Аноним 27/04/20 Пнд 05:07:20 1668641172
>>1667561
А сколько ты на старте получал в долларах?
Аноним 27/04/20 Пнд 16:31:52 1669245173
Привет, базаны.
Не знаю, может это чисто у меня такое, но заметил такую вещь, что в большинстве случаев работа с sql это тоска смертная. Какие-то смердящие данные, лежащие в тысячах таблиц, которые создал прошлый творец, благодаря которому всё это надо джойнить и тащить. Круг задач на sql крайне узкий, при этом приходится сидеть и пердолиться с хранимыми процедурами на этом весьма посредственном синтаксисе.
Куда бы я не копнул, в какую бы сторону не попытался смотреть, где есть большое присутствие SQL - везде тоска смертная. Тот же Power BI и прочие иже с ним производят впечталение какого-то переоценнённого говна вроде О СМОТРИ ТЕПЕРЬ ТУТ МОЖНО ДЕЛАТЬ ТАКИЕ ЖЕ НЕСКУЧНЫЕ ГРАФИКИ КАК В ACCESS/EXCEL В 2007 ГОДУ!

Как вы находите себе интересные задачи там? Идёте в банк и становитесь аналитиками? Или по кайфу пишете запросы, достаёте данные бэкендерам/фронтам и отдаёте их, заваривая очередной чай? Пришёл на проект, где всё очень сильно завязано на sql, с тысячей таблиц, масса из которых будто бы делалась наспех и чтобы быстрее работала. И просто тоска смертная, сидит тимлид, во всём этом разобравшийся и агитирует вникнуть и разобраться других, чтобы и дальше плодить в этом монстре триггеры и хранимые процедуры сидя на сервере 10 версии.
Аноним 28/04/20 Втр 09:04:22 1669868174
>>1669245
Фсмысли, узкий круг? а само число таблиц разве не показывает, что число видов сущностней записанных в этой базе широкое?

Потом, наверное твой текущий проект денег приносит нихуево.

Если так скучно, поди напиши мобильный клеент к нему. Это многим нужно, но они (справедливо) считают что это слишком дорого
Аноним 28/04/20 Втр 09:30:41 1669878175
>>1667593
Как обычно, в it уже про это забыли, но да, для ускорения. Базовая задача - ускорение.

Обновить данные в одном файле, не затронув гору других.
Хранить данные компактно связывая их по идентификаторам int, но тащить везде одинаковые и длинные строковые поля.
Аноним 28/04/20 Втр 10:41:36 1669935176
Привет, аноны.

Решаю задачи обучающего раздела с sql-ex на PGSQL. Иногда решение не работает на PGSQL, но аналогичное работает на другой СУБД. Хотелось бы, чтобы их кто-нибудь объяснил.

Следующее решение задачи 101 проходит на MySQL, но даёт неверный результат на проверочной базе в PGSQL.

> select
> code, model, color, type, price,
> max(model) over w,
> max(case type when 'Jet' then 1 else 0 end) over w
> + max(case type when 'Matrix' then 1 else 0 end) over w
> + max(case type when 'Laser' then 1 else 0 end) over w as distinct_types,
> avg(price) over w
> from (
> select
> printer.*,
> (sum(case when color = 'n' then 1 else 0 end) over (order by code)) as group_no
> from
> printer
> ) grouped_printers
> window w as (partition by group_no)
Аноним 28/04/20 Втр 10:43:27 1669937177
То же самое с задачей 117

PGSQL (не проходит):
select distinct
country, value, attr
from (
select
country, attr, value,
rank() over (partition by country order by value desc) as rank
from
classes
join lateral
(values ('numguns', numguns 5000), ('bore', bore 3000), ('displacement', displacement)) attrs(attr, value)
on true
) q
where rank = 1

MSSQL (проходит, join lateral заменен на cross apply):
select distinct
country, value, attr
from (
select
country, attr, value,
rank() over (partition by country order by value desc) as rank
from
classes
cross apply
(values ('numguns', numguns 5000), ('bore', bore 3000), ('displacement', displacement)) attrs(attr, value)
) q
where rank = 1
Аноним 28/04/20 Втр 11:08:50 1669963178
>>1669868
>а само число таблиц разве не показывает, что число видов сущностней записанных в этой базе широкое?
Ну да. А что толку? Можно нескучно джойнить благодаря фантазиям архитектора, когда отчёт собирается из нескольких баз данных и это типа я эскуель девелопер?

>Потом, наверное твой текущий проект денег приносит нихуево.
Ну, скажем так, он просто не сможет жить. Но даже программисты там часть звена, и даже не центровая, по сути. Просто руководство не захотело один раз потратиться на готовое решение, поэтому начали городить велосипеды, в итоге это всё превратилось в пранк, вышедший из под контроля.

>Если так скучно, поди напиши мобильный клеент к нему. Это многим нужно, но они (справедливо) считают что это слишком дорого
Есть уже. Околобесполезная вещь оказалась. Потому что специфика бизнеса такая, что никому не нужно.
Аноним 29/04/20 Срд 02:26:37 1671094179
>>1668641
Первая зп - 600$ кажется, отдел отчётности, Киев, 2014\2015 год, но там просто череда везений была после с повышением и внезапным переходом в другой отдел. Так-что даже не буду описываить.
Аноним 13/05/20 Срд 01:23:02 1685978180
15621001471070.png 640Кб, 604x604
604x604
Смотрите какую йобу я придумал.
Вот есть JSON. Можно представить что это либо строка, либо число, либо массив, либо объект (условно).
А теперь берём это определение и создаем под него нормализованную схему БД - то есть по отдельной таблице для каждого типа (строка/число/массив/объект) и таблица которая маппит конкретное значение в конкретный тип.
Это что получается, я изобрел монгу поверх реляционки?
Аноним 13/05/20 Срд 02:16:42 1685994181
>>1685978
На самом деле, в том или ином масштабе можно изобрести что угодно поверх чего угодно. Реляционная поверх key-value. Древовидная поверх реляционной. Key-value поверх таблицы из одной строки с полем TEXT. Было бы где хранить байтики и чем их обрабатывать. Жёсткий диск же как-то всё хранит в одном линейном массиве.
Аноним 15/05/20 Птн 22:36:43 1689664182
Аноним 21/05/20 Чтв 00:01:12 1695786183
Поясните за изоляцию транзакций.
Аномалии могут наблюдаться только при наличии > 1 запроса в транзакции, или с 1 запросом тоже может быть (например когда вложенный select или join)?
Аноним 21/05/20 Чтв 00:37:55 1695825184
>>1695786
Только при наличии > 1 запроса.
Аноним 21/05/20 Чтв 00:39:38 1695827185
15891943925380.jpg 280Кб, 1024x1371
1024x1371
>>1695825
Заебись тогда. Спасибо!
Аноним 21/05/20 Чтв 01:43:33 1695868186
>Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
Крч есть книги, есть категории. Связь many-to-many
books, categorys, books_categorys
Вывести пары книга-книга у которых более 5 общих категорий
Аноним 21/05/20 Чтв 02:33:29 1695883187
>>1695868
SELECT bc1.book_id, bc2.book_id
FROM books_categories bc1, books_categories bc2
WHERE
bc1.category_id = bc2.category_id
AND bc1.book_id != bc2.book_id
GROUP BY bc1.category_id
HAVING COUNT(bc1.book_id) > 5;

Найти сначала все пары с хотя бы одной общей категорией (одинаковая категория, разные книги), затем сгруппировать по id первой книги и проверить, что записей в группе больше 5.
Аноним 21/05/20 Чтв 02:37:27 1695884188
Горит жепа Аноним 21/05/20 Чтв 20:48:52 1696768189
15423842878900.jpg 43Кб, 570x587
570x587
есть строка формата datetime и мне нужно ещё достать в пхп и вставить в строку, когда я это делаю получается что вставлена пустая строка, а как достать значения даты я не понимаю мне 12 лет я додик подскажите как с этим работать
Аноним 21/05/20 Чтв 20:59:08 1696776190
>>1696768
Спроси в php-треде, и сразу приложи ссылку на pastebin с твоим кодом
Аноним 22/05/20 Птн 20:43:39 1698093191
Аноним 22/05/20 Птн 21:22:35 1698197192
Наверное оче часто задаваемый вопрос, но все же, по SQL вроде много курсов там всяких, видео, но с чего лучше всего начать из этого С НУЛЯ когда, реально глаза разбегаются и не поймешь что годно что нет, где будет одно и то же другими словами... Есть какие-то одобренные аноном хорошие бесплатные курсы?
Аноним 22/05/20 Птн 21:38:06 1698228193
>>1698197
Упражнения на sql-ex.ru
Аноним 22/05/20 Птн 21:40:33 1698231194
>>1698228
Как только научишься писать там SELECT'ы разной сложности, рекомендую для изучения теории курс на Stepik, там будут рассмотрены вопросы проектирование схемы, нормальные формы, и мб даже транзакции.
Аноним 22/05/20 Птн 21:53:00 1698245195
>>1698228
>>1698231
Спасибо, на степике видел курсы, который от вышки норм? Еще разные смотрю, их так-то полно но хз какие стоят прохождения. И еще, а книги типа Грабера и других из того же гайда вон стоит читать?
Аноним 22/05/20 Птн 21:59:10 1698252196
>>1698245
Да, норм, я эти курсы и имел в виду.
Для начала сойдут.
Что изучать после этого - пусть подскажут другие аноны. Да и это зависит от того, куда ты хочешь пойти (DBA или разработка приложений).
Аноним 22/05/20 Птн 22:01:41 1698256197
>>1698252
Аналитик, у меня вышка с экономикой/финансами вообще связана, сейчас смотрю в вакансиях много где надо с базами уметь обращаться.
Аноним 22/05/20 Птн 22:05:12 1698262198
>>1698256
Мне кажется, что для аналитика достаточно умения выполнять хитроумные SELECT'ы со всякими агрегированиями, window-функциями, рекурсивными CTE и pivot (это как раз то, чему учит весь sql-ex) , а пректирование схем их не очень касается.
Но пусть лучше тебе аноны-аналитики подскажут.
Аноним 22/05/20 Птн 22:07:15 1698263199
>>1698262
Если я просто девелопер без знания SQL, который пишет только OLTP, мне нужно учить все эти пивоты и рекурсии? Или во всякой вебне, которую я буду писать, в основном все попроще?
другой анон
Аноним 22/05/20 Птн 22:11:20 1698268200
>>1698263
Плюсану к этому вопросу.
Сам я от нечего делать нарешал 350+ задач на sql-ex, но хотелось бы знать, насколько всё это нужно обычному бэкенд-разрабу.
Аноним 22/05/20 Птн 22:14:48 1698271201
>>1698268
Вообще, я общался на эту тему с одним php-разрабом, он сказал, что у них всё через ORM. А значит, никаких advanced-фич.
Но один случай ничего не значит.
Аноним 22/05/20 Птн 22:22:08 1698281202
>>1698263
Глубоко задрачивать что-то дальше джоинов смысла мало. Обычно если реально что-то понадобилось, это легко гуглится и сразу же изучается.
Аноним 22/05/20 Птн 22:47:52 1698331203
>>1656590
Анон, двигай в сторону data science или в кровавый интырпрайз. Выбери что нравится: на очередном собрании с заказчиками пиздеть, что данные были сырыми и всё проёбано, или что индусы опять нахуярили ебанины, и ваш отдел качества опять проебал все сроки. Но уже за 200-300 тыщ в секунду.
Аноним 23/05/20 Суб 01:57:12 1698555204
>>1638710 (OP)
Посоветуйте книгу по темам event/domain driven systems
Аноним 23/05/20 Суб 19:32:22 1699226205
Аноним 23/05/20 Суб 20:20:17 1699268206
>>1638712
>выбрать литературу для вкатывания в sql
Моисеенко
Аноним 23/05/20 Суб 21:10:12 1699357207
Аноним 23/05/20 Суб 22:43:37 1699524208
Посоветуйте книгу/туториал по postgresql. С sql в общих чертах знаком.
Аноним 23/05/20 Суб 23:00:34 1699538209
Аноним 23/05/20 Суб 23:02:29 1699541210
>>1699538
Ты выставляешь меня в невыгодном свете.
Аноним 24/05/20 Вск 03:03:17 1699635211
Аноним 24/05/20 Вск 13:42:06 1699855212
>>1642509
В чем сделана схема на скрине?
Искал средство визуального построение схем БД, и чтото не нашлось годного. Есть красивый https://www.dbdesigner.net но он платный. Что посоветуете?
Аноним 24/05/20 Вск 15:05:46 1699985213
>SQL is one of the world's most fantastically moronic language. It is a language of ad-hoc-ness; the least structured; a oneliner sequence of awkwardness and inflexibility.
Аноним 24/05/20 Вск 15:21:38 1700001214
>>1699985
Чёт больше ничего не взлетело, а за овер 30 лет могло бы. Даже ORM подражают SQL.
Аноним 24/05/20 Вск 17:02:13 1700242215
>>1700001
Да это я набросил просто.
Аноним 24/05/20 Вск 17:41:23 1700289216
>>1699524
Официальная документация.
Серьёзно, она вполне читаемая.
Аноним 24/05/20 Вск 18:00:39 1700322217
>>1700289
Уже читаю, спасибо.
Аноним 24/05/20 Вск 21:49:18 1700589218
image.png 5Кб, 472x136
472x136
>>1638710 (OP)
Redis и Postgres работают через сокеты, мне вот интересно: их обычно ставят на том же серваке или относят на другой удаленный серв? Просто хуячить дополнительный HTTP-request к стороннему ресурсу это пиздец в плане быстродействия
Так кто-то делает?
Аноним 24/05/20 Вск 21:53:35 1700594219
>>1700589
При чём тут HTTP? К удалённому серву тоже обращаются через сокеты без HTTP.
Аноним 24/05/20 Вск 21:54:06 1700595220
>>1700589
Ты забываешь use case когда есть несколько инстансов приложения и общая БД
Аноним 24/05/20 Вск 21:58:34 1700600221
>>1700595
>>1700594
Есть у меня 2 проекта: бот для телеги и веб-кроулер (пока тестировал их только на своей машине в localhost). В обоих юзается Postgres а в одном еще и Redis (для очередей). Мне же нет никакого смысла для таких небольших проджектов хуярить БД на отдельном ресурсе? Лучше на тот же сервак залить?
Аноним 24/05/20 Вск 21:59:31 1700601222
>>1700600
> Лучше на тот же сервак залить?
Конечно лучше. Пока у тебя нет проблем масштабирования так и надо делать
Аноним 25/05/20 Пнд 11:44:38 1701365223
Что делать с перечисляемым атрибутом, по-кторому часто может быть поиск, но вариантов этого атрибута - не много, перед вставкой он проверяется, но возможно варианты атрибута поменяются в будущем? Например sex/gender (я быдло и разницы не понимаю, если что): надо делать отдельную сущность gender или enum подойдет?
Вообще у меня курсач "агенство по трудоустройству", я хз что делать с типом занятости, типом зарплаты и т.д. - ебнуть их в enum или в другую таблицу? Если в другую таблицу - джоинов много, при этом данных не много, к тому же они явно будут индексированы. Да и enum в реляционной алгебре - явно просто еще одно отношение...
Че делать то?
Аноним 25/05/20 Пнд 12:09:06 1701415224
>>1700589
обычно на отдельной единице исполнения. И что? Надо мерять важно это или нет.

Хорошо бы, чтобы http были не серийные, последовательного ожидающие ожидающие ответов,а логически-законченные запросы к какому-то "мидлваре" , application server И тд.

В принципе и с sql та же проблема.
Многие программисты ужасно удивлялись, когда их приложение на дельфи перенесенное из локалочки в интернет, начинало тормозить.

Противоположный конец - встраиваемые в программу субд: sqllite, berkleydb, библиотека innodb, embeded mysql (впрочем, его похоронили) .
Там действительно все не так как привыкли, нулевые накладные расходы на обмен.
Аноним 25/05/20 Пнд 12:56:26 1701506225
>>1701365
enum подойдёт
Чтобы быстро работал поиск, делай индекс по нему.
В твоём случае отдельная таблица никакого выигрыша не даёт, да и непонятно, какие атрибуты тебе нужны в таблице полов, кроме названия.
Аноним 25/05/20 Пнд 13:58:31 1701603226
Screenshot8.png 142Кб, 1706x993
1706x993
Кто может объяснить, какому пользователю я должен дать права? Застрял с дипломкой
Пиздец дедлайн скоро уже
Аноним 25/05/20 Пнд 14:44:40 1701693227
Я оказывается не в старом треде вопрос задал, спрошу еще тут

Есть кто работал с SQLite?
У меня в таблицах первичным ключом будет поле с GUID вместо числового с автоинкриментом.
Подскажите, как лучше таблицы создать с опцией WITHOUT ROWID или без нее в этой ситуации?
Это опция позволяет делать поле, которое является первичным ключом, кластерным индексом.
Без этой опции у каждой таблицы создается числовое поле ROWID которое и будет счиаться кластерным индексоа.

Так вот
Как у них в документации написано
https://www.sqlite.org/withoutrowid.html
Что стоит использовать WITHOUT ROWID когда ключевое поле не числовое и когда строки не занимают очень много места.
Также эта опция уменьшает ускоряяет поиск и уменьшает место занимаемое строкой за счет того что нету поля ROWID.

Но говорят что использование гуида в качестве кластерного индекса повышает фрагментацию на диске и что база разбухает быстро от этого
Правда это статься про MS SQL Server, не знаю насколько это применимо к SQLite
https://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/
Аноним 26/05/20 Втр 15:32:44 1703170228
PROCEDURE "DELETE_LEAST_PROFITABLE_BALANCE" IS
BALANCE_ID_ NUMBER;
BEGIN
SELECT ID INTO BALANCE_ID_ FROM BALANCE ORDER BY AMOUNT LIMIT 1;
DELETE FROM OPERATIIONS WHERE BALANCE_ID = BALANCE_ID_;
DELETE FROM BALANCE ORDER BY AMOUNT LIMIT 1;
END;


Нужно удалить запись с первичным ключом из Balance и все вторичные ключи этой записи из Operations. Видит ошибку в этой записи, ругается на Statement Ignored и неверное завершение sql предложения.
Аноним 26/05/20 Втр 15:49:07 1703199229
>>1703170
> DELETE FROM BALANCE ORDER BY AMOUNT LIMIT 1;
delete from balance where amount = (select amount from balance order by amount limit 1);

Ну тли min()/max()
Аноним 26/05/20 Втр 16:06:55 1703216230
>>1703199
А так не сработает?
> delete from balance order by amount limit 1
Аноним 26/05/20 Втр 16:13:27 1703224231
>>1703216
работает. в mysql, лол.
чувствуешь подвох?
Аноним 26/05/20 Втр 16:18:29 1703233232
>>1703199
>>1703216
Да, но мне же еще нужно сохранить ID для удаления записей с ним в другой таблице, это ключ без ON DELETE CASCADE. Ну да, ладно, сработало вот так:
PROCEDURE "DELETE_LEAST_PROFITABLE_BALANCE" IS
BALANCE_ID_ NUMBER;
BEGIN
SELECT ID INTO BALANCE_ID_ FROM BALANCE WHERE AMOUNT = (SELECT MIN(AMOUNT) FROM BALANCE);
DELETE FROM OPERATIONS WHERE BALANCE_ID = BALANCE_ID_;
DELETE FROM BALANCE WHERE ID = BALANCE_ID_;
END;

с ORDER BY и LIMIT он упорно не хотел работать.
Аноним 26/05/20 Втр 16:21:32 1703239233
>>1703224
Ебать странный синтаксис.
Я думал, что не столкнусь ни с чем страннее insert into ... select
Аноним 26/05/20 Втр 17:26:50 1703370234
image.png 78Кб, 557x441
557x441
image.png 46Кб, 512x424
512x424
image.png 88Кб, 591x444
591x444
EXCEPT не работает, если вторая выборка вообще ничего не возвращает?
Аноним 26/05/20 Втр 17:30:59 1703378235
>>1703370
Возврат пустой выборки - не ошибка, и исключения не будет.
То же самое с delete и update, если записи не найдены.
Аноним 26/05/20 Втр 22:52:01 1703768236
image.png 183Кб, 749x665
749x665
>>1638710 (OP)
Блин, где объясняется чтение подобных таблиц для СУБД? Куча стрелочек, причем какие-то с треугольником и кружком на конце, а какие-то с кружком и линией
Аноним 26/05/20 Втр 23:10:48 1703797237
>>1703768
htps://ru.wikipedia.org/wiki/ER-модель
Аноним 26/05/20 Втр 23:11:40 1703800238
Аноним 27/05/20 Срд 10:18:58 1704100239
Аноним 27/05/20 Срд 16:15:08 1704392240
>>1648362
Тебе нужна предпоследняя точка в строке, не нужно проверять число вхождений
Аноним 27/05/20 Срд 19:14:58 1704606241
Есть запрос:
Select поле1, поле2... фром... агрегатные функции...where...
И есть условие:
Where поле1 in (массив_значений)
Мне нужно чтобы результат был сгруппировано (group by, ага) по этому условию.
Т.е. две строки получалось, с одними и теми же столбцами, но в одной поле1 удовлетворяет условию, в другой нет.
Конечно, можно сделать 2 запроса, но ведь как-то можно сделать и одним?
Аноним 27/05/20 Срд 19:53:18 1704650242
>>1704606
Не понял твоего вопроса, но возможно тебе поможет HAVING.
Аноним 27/05/20 Срд 19:55:01 1704656243
>>1704606
Прочитал ещё раз вопрос и вроде понял.
Делай
GROUP BY CASE WHEN поле1 IN (...) THEN 1 ELSE 0 END
Аноним 27/05/20 Срд 21:52:17 1704777244
Аноним 27/05/20 Срд 21:57:06 1704787245
>>1704656
Я не понимаю - что значит сгруппировано по этому условию?
Может быть
SELECT (CASE WHEN field1 IN [] THEN 1 ELSE 0 END) AS conditon
GROUP BY field1?
Аноним 27/05/20 Срд 22:15:17 1704821246
>>1704787
Или можно больше данных по запросу?
Аноним 27/05/20 Срд 22:24:01 1704832247
>>1704606
>Where поле1 in (массив_значений)
> в одной поле1 удовлетворяет условию, в другой нет.
Выбери что-то одно. Тебе нужна не фильтрация (where), а флаг показывающий состояние по этому условию
Аноним 27/05/20 Срд 22:29:28 1704842248
>>1698263
Ну рекурсии могут пригодится не только для аналитики (иерархия комментов с пагинацией, например), но к целом дрочить много не надо, надо знать минимум и идти дальше и от задач строить своё обучение
Аноним 27/05/20 Срд 22:41:40 1704861249
MSSQL
Такое дело: есть две таблицы. Одна таблица — сколько вошло, вторая — сколько вышло. Мне нужно как-то придумать, чтобы сопоставить вторую таблицу с первой по принципу FIFO. Например так:
table_in
ID, AMOUNT
1,3
2,3
table_out
ID,AMOUNT
1,2
2,2
3,1
А на выходе должно получиться
IN_ID,OUT_ID,AMOUNT
1,1,2
1,2,1
2,2,1
2,3,1
Аноним 27/05/20 Срд 23:05:20 1704906250
>>1704650
>>1704777
>>1704787
>>1704821
>>1704832
Спасибо за ответы. Коллега помогла с решением.
With (массив значений) as table
select поле1 in table as условие, поле2... фром... where...
group by условие.
И получается, то, что я хотел, за один запрос.
Не знал, что можно делать CTE из массива значений, и то, что через IN и Group by вот так можно делить, я точно бы никогда не догадался.
Надо было больше задачек решать на sqlex, эх. Чувствую себя тупым.
Аноним 27/05/20 Срд 23:14:37 1704915251
>>1704906
Хотя CTE тут и не обязателен. Можно просто
select поле1 in (массив значений)
Аноним 29/05/20 Птн 09:58:06 1706485252
Что прочитать по Postgresql?
Много лет его использую, но недавно меня уж очень больно опустили по поводу уровней сериализации транзакций, фантомных чтений wala и прочей хрени.
К тому, же, я видимо пропустил много крутых фич, вроде skip locked.
Что читать/смотреть по этим двум направлениям?
Аноним 29/05/20 Птн 12:37:27 1706652253
Как вкатиться в OLAP-кубы?
Аноним 29/05/20 Птн 13:33:49 1706723254
Аноним 29/05/20 Птн 22:35:41 1707483255
Двач, помоги бездарю расшифровать простейший запрос
SELECT name, age
FROM "/users/alan/folder1/table1"
WHERE age >= 18
Аноним 29/05/20 Птн 22:45:37 1707491256
>>1707483
Используй жс, так понятнее будет
Аноним 29/05/20 Птн 23:05:14 1707512257
>>1707483
что за БД то ебаный в рот
Аноним 29/05/20 Птн 23:28:53 1707533258
Аноним 29/05/20 Птн 23:30:46 1707537259
Аноним 29/05/20 Птн 23:33:51 1707542260
Аноним 30/05/20 Суб 11:19:07 1707816261
>>1707483
Выбрать стоблцы Имя/Возраст
Из таблицы
Где возраст больше 18
Аноним 30/05/20 Суб 11:27:48 1707818262
Аноним 30/05/20 Суб 11:30:55 1707820263
>>1704906
Тебе не sqlex решать нужно, а скилл русского подтянуть, половина анонов не поняли что ты спросить то хотел.
Аноним 30/05/20 Суб 15:24:21 1708015264
Аноним 30/05/20 Суб 15:35:25 1708025265
image.png 16Кб, 491x487
491x487
Блин, как к Postgres на Винде подконнектиться?..
На Линухе я просто заходил через sudo psql и мне было поебать, сейчас на винде (pgAdmin установлен если что, но он не сильно помогает) при попытке приконнектиться через терминал командой psql появляется вот эта залупа: psql: ВАЖНО: пользователь "Антон" не прошёл проверку подлинности (по паролю). Как подконнектиться-то? (нового юзера с помощью CREATE ROLE Антон WITH LOGIN PASSWORD 'password' я уже создал, но толку никакого, psql меня не признает)
Аноним 30/05/20 Суб 16:29:23 1708103266
>>1708015
Принцип FIFO это как?
Аноним 30/05/20 Суб 16:37:13 1708116267
>>1708103
First in-First out Ты в школе не учился?
Аноним 30/05/20 Суб 17:06:22 1708153268
>>1708015
Твоя задача непонятна.

Если в id=1 вошло 3, а вышло 2, то почему осталось 2?
И да, если ты считаешь число вошедших/вышедших, а не их самих, то какой там порядок (FIFO/LIFO) не имеет значения.
Аноним 30/05/20 Суб 17:07:56 1708155269
>>1708153
Нужно совместить ID входов с ID выходов. Если количества на входе не хватает, то разбить на две записи.
Аноним 30/05/20 Суб 17:15:50 1708166270
image.png 2Кб, 147x170
147x170
>>1708153
У что тут непонятного?
Аноним 30/05/20 Суб 17:31:35 1708173271
>>1708166
При помощи оконной функции sum из table_in и table_out делаешь интервалы

Для table_in:
ID IDX_START IDX_END
1 1 3
2 4 6

Для table_out:
ID IDX_START IDX_END
1 1 2
2 3 4
3 5 5

Потом берёшь все интервалы из table_in и table_out и попарно пересекаешь.
Аноним 30/05/20 Суб 18:33:48 1708236272
>>1708116
ок, иди нахуй, сам разбирайсмя со своим говном тогда.
Аноним 30/05/20 Суб 23:56:51 1708723273
image.png 5Кб, 858x121
858x121
Что за руснявое говно в именах строчек таблиц? Откуда оно взялось блин? Мне оно нахрен не сдалось
Аноним 31/05/20 Вск 08:13:05 1708857274
>>1708723
кодировку поменяй в выводе
Аноним 31/05/20 Вск 09:41:11 1708870275
20160205100222f[...].jpg 65Кб, 604x468
604x468
>>1708857
чот проиграл, руснявое говно оказалось, не в кодировке, а за клавиатурой.
Аноним 31/05/20 Вск 11:07:10 1708888276
Аноним 31/05/20 Вск 15:05:24 1709035277
>>1708025
Есть вариант форс коннекта через psql -U postgres: вход от имени юзера postgres
Аноним 31/05/20 Вск 16:47:28 1709182278
>>1708025
В pg_hba пользователь прописан? Или any?
Аноним 01/06/20 Пнд 13:55:51 1709886279
Как правильно хранить списки в MS SQL? Как хранить просто данные о том, что есть множество A и оно состоит из элементов a1, a2 и a3 я понимаю, но как правильно хранить информацию о том, что у меня есть список из элементов a1, a2 и a3, в который пользователь может вставить элемент a4 на вторую позицию и список станет a1, a4, a2, a3, я не понимаю.

Вот допустим есть две таблицы:

CREATE TABLE [dbo].[Item]
(
Item_ID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NOT NULL,
CONSTRAINT PK_Item PRIMARY KEY CLUSTERED(Item_ID)
);

CREATE TABLE [dbo].[Zone]
(
Zone_ID INT IDENTITY(1,1) NOT NULL,
Name NVARCHAR(50) NOT NULL,
CONSTRAINT PK_Zone PRIMARY KEY CLUSTERED(Zone_ID)
);

И мне нужно хранить информацию о расположении элементов в зонах.

Я могу банально сделать вот так:

CREATE TABLE [dbo].[Item_Zone_Position]
(
Item_ID INT NOT NULL,
Zone_ID INT NOT NULL,
Position INT NOT NULL,
CONSTRAINT PK_Item_Zone_Position PRIMARY KEY CLUSTERED(Item_ID),
CONSTRAINT FK_Item_Zone_Position_Item FOREIGN KEY(Item_ID)
REFERENCES [dbo].[Item](Item_ID),
CONSTRAINT FK_Item_Zone_Position_Zone FOREIGN KEY(Zone_ID)
REFERENCES [dbo].[Zone](Zone_ID)
);

Но тогда при вытаскивании первого элемента мне придётся обновлять позицию у оставшихся элементов в зонах и если из этой таблицы будут одновременно много чтений и записей, то меня закидает дедлоками.

Есть такой вариант, его проще обновлять, но для чтения придётся использовать рекурсивное CTE:

CREATE TABLE [dbo].[Item_Zone_Position_V2]
(
Item_ID INT NOT NULL,
Zone_ID INT NOT NULL,
Previous_Item_ID INT NULL,
CONSTRAINT PK_Item_Zone_Position_V2 PRIMARY KEY CLUSTERED(Item_ID),
CONSTRAINT FK_Item_Zone_Position_V2_Item FOREIGN KEY(Item_ID)
REFERENCES [dbo].[Item](Item_ID),
CONSTRAINT FK_Item_Zone_Position_V2_Zone FOREIGN KEY(Zone_ID)
REFERENCES [dbo].[Zone](Zone_ID),
CONSTRAINT FK_Item_Zone_Position_V2_Item2 FOREIGN KEY(Item_ID)
REFERENCES [dbo].[Item](Item_ID)
);

Есть ещё вариант с тем, чтобы хранить в таблице с позициями ещё и версию расположения элементов в конкретной зоне и вместо UPDATE делать INSERT, но тогда таблицу придётся как-то чистить от предыдущих состояний и как-то избегать ситуаций, когда две транзакции пытаются записать туда данные одновременно (предыдущие два варианта меня подкупают тем, что они должны работать без явно указанных блокировок на стандартном уровне изоляции транзакций).

У меня в голове ещё крутится идея о том, что можно было бы создать таблицу с возможными позициями в зонах (ID позиции, ID Зоны, номер позиции в зоне, ID предыдущей позиции в зоне, ID следующей позиции в зоне) и таблицу-связку для хранения информации о том в какой позиции находится соответствующий элемент. В чём тут профит я не понял, но наверное какой-то должен быть.

Так как лучше будет, чтобы быстро, безопасно и без дедлоков?
Аноним 01/06/20 Пнд 13:59:49 1709887280
Аноним 01/06/20 Пнд 14:51:56 1709950281
Аноним 01/06/20 Пнд 15:32:17 1710021282

Какой правильный синтаксис, если я хочу взять сначала из таблицы все записи меньше параметра_1 а из полученных данных взять только записи больше параметра_2?
Я так понимаю надо использовать запрос и ещё внутри подзапрос. Но с синтаксислм что-то не получается
Аноним 01/06/20 Пнд 15:36:45 1710026283
>>1709950

Ну это примерно соответствует моему первому варианту.

А что будет в том случае, когда кто-то будет читать данные из таблицы, по которой идёт этот UPDATE? Часть таблицы заблокирует UPDATE, часть SELECT и скажи привет дедлоку. Если бы я контролировал то, как эти запросы расставляют блокировки, то я бы просто сделал бы так, чтобы они блокировали требуемые им ресурсы в одном и том же порядке, что исключило бы вероятность дедлоков, но у меня нет такой возможности (по крайней мере я не знаю способов так сделать).

Ещё я не понял как обстоят дела с индексами и ключами: судя по коду твоего примера там нет ни ключей, ни индексов на столбце order, т.е. если я буду играться с блокировками, то этот
update table
set order = order - 1
where order >= ? and order <= ?;

просто заблокирует мне эти строки, но не защитит меня от ситуаций, где другая транзакция вставляет строки, которые тоже подпадают под это условие, что в свою очередь может привести к нарушению целостности данных.

Я имею ввиду ситуацию:

Транзакция 1:

1. Выкидывает из плейлиста песню с номером 5.
2. Песни с номерами больше 5 уменьшают свой номер на 1.

Транзакция 2:

1. Определяет последний номер песни в плейлисте.
2. Вставляет новую песню с номером на 1 больший, чем максимальный.

Если эти операции физически выполнятся вот так, то фигня получится:

1. Транзакция 2, шаг 1.
2. Транзакция 1, шаг 1.
3. Транзакция 1, шаг 2.
4. Транзакция 2, шаг 2.

В итоге получится, что после первой транзакции список 1, 2,3 ... 100 превратится в 1,2,3,..99, а вторая транзакция превратит его в 1,2,...99,101. Ну и само собой это не единственный вариант такой коллизии, могут быть ещё в варианты с присвоением одного и того же номера двум элементам одновременно.
Аноним 01/06/20 Пнд 15:38:44 1710031284
>>1710021
select ★ from (select ★ from my_table where a < param_1) where a > param_2;

Но зачем? Результат будет такой же, как без подзапросов, через and.
Аноним 01/06/20 Пнд 15:39:02 1710032285
>>1710021
>Какой правильный синтаксис, если я хочу взять сначала из таблицы все записи меньше параметра_1 а из полученных данных взять только записи больше параметра_2?
>Я так понимаю надо использовать запрос и ещё внутри подзапрос. Но с синтаксислм что-то не получается

Почему нельзя объединить эти два условия в одном запросе:
WHERE
[Table1].[Field1] < @Param1
AND
[Table1].[Field1] > @Param2
Аноним 01/06/20 Пнд 16:03:47 1710059286
Аноним 01/06/20 Пнд 16:09:34 1710066287
>>1710059
>А про скорости?

SQL - это декларативный язык, ты пишешь ЧТО ты хочешь получить, но не пишешь КАК и не пытаешься быть умнее, чем оптимизатор запросов.
Аноним 01/06/20 Пнд 16:19:29 1710085288
>>1710066
Почему тогда в вакансиях пишут "навыки оптимизации SQL-запросов"? Сейчас не вспомню где именно, но несколько раз точно попадались.
Аноним 01/06/20 Пнд 16:35:35 1710104289
>>1710085
>Почему тогда в вакансиях пишут "навыки оптимизации SQL-запросов"
>>1710066
>ты пишешь ЧТО ты хочешь получить, но не пишешь КАК

Здесь нет противоречия. Даже если тебе требуется переписать запрос таким образом, чтобы он быстрее выполнялся, то ты всё равно пишешь это в декларативном стиле, чтобы оптимизатор запросов построил более выгодный план выполнения, напрямую план выполнения ты не контролируешь (почти).
Аноним 01/06/20 Пнд 16:46:40 1710123290
>>1638710 (OP)
Анон, будь добр, линкани ссылку на тренировочную базу для изучения функционала sql server
Аноним 01/06/20 Пнд 16:47:08 1710124291
>>1707816
Больше или равно 18

мимо зануда
Аноним 01/06/20 Пнд 17:31:33 1710222292
Аноним 01/06/20 Пнд 18:48:10 1710325293
Аноним 01/06/20 Пнд 23:12:45 1710532294
>>1652440
А если я хочу рости быстре коллег которые так же хуярят?
Аноним 02/06/20 Втр 13:32:32 1710811295
капслокобляди
Аноним 02/06/20 Втр 13:36:39 1710815296
>>1710811
ЧТО ТЕБЕ НЕ НРАВИТСЯ?
Аноним 02/06/20 Втр 15:36:02 1710903297
>>1710815
Что до сих пор нет нормального набора операций из реляционки. Вам бы лишь юбилей двухзначного номера версии отпраздновать поскорее. ГДЕ МОЙ SUBTRACT БЛЯДТЬ?!
Аноним 02/06/20 Втр 15:49:33 1710911298
>>1710532
Тогда почитывать матчасть на досуге. Главное не перегореть, заливать работу личным временем говнопрактика.
Аноним 03/06/20 Срд 16:26:17 1712037299
>>1638710 (OP)
Если я сделал SELECT с припиской ORDER_BY а затем отфильтровал этот упорядоченный дамп записей через SELECT WHERE то получившийся ответ так же будет упорядочен, или надо сновая юзать order by?
Аноним 03/06/20 Срд 16:33:23 1712043300
>>1712037
Снова надо писать.
Поэтому order by бесполезен везде, кроме самого внешнего select, за исключением использования вместе с limit или с чем-то подобным.
Аноним 03/06/20 Срд 16:45:27 1712052301
>>1712037
>Если я сделал SELECT с припиской ORDER_BY а затем отфильтровал этот упорядоченный дамп записей через SELECT WHERE то получившийся ответ так же будет упорядочен, или надо сновая юзать order by?

Лучше всего представить себе запрос SELECT X FROM T1 WHERE Y ORDER BY Z как T1.Where(Y).Select(X).OrderBy(Z), где Where, Select и OrderBy - это методы (функции) определённые на соответствующих классов. При такой записи станет понятнее, что такое логический порядок выполнения операторов SQL. Так вот, в такой форме ещё легче понять почему если Select и Where возвращают таблицы (неупорядоченный набор данных по определению), а OrderBy возвращает курсор (объект, позволяющий читать данные из таблицы по одной строке в определённом порядке), то после того, как OrderBy вызван, последующий вызов Where снова вернёт нам таблицу, т.е. неупорядоченный набор данных. Строго говоря в зависимости от реализации ты можешь получать и упорядоченный набор данных в некоторых случаях, но рассчитывать на это нельзя.

>>1712043
>Поэтому order by бесполезен везде, кроме самого внешнего select, за исключением использования вместе с limit или с чем-то подобным

И что особенно важно бесполезен в представлениях (VIEW).
Аноним 04/06/20 Чтв 02:05:08 1712539302
>>1710026
>просто заблокирует мне эти строки, но не защитит меня от ситуаций, где другая транзакция вставляет строки, которые тоже подпадают под это условие, что в свою очередь может привести к нарушению целостности данных.

Бамп вопросу
Аноним 04/06/20 Чтв 09:22:32 1712643303
Как проходит например вот такое сравнение:
SELECT
CASE WHEN '00:00:00' >= '00:00:00' THEN 1
ELSE 0
END


Он сравнивает побитово? Или как-то магическим образом понимает что это время?
Аноним 04/06/20 Чтв 10:04:13 1712657304
Сильно плохо обновлять поля, даже если значение не поменялось? Использую андроидовскую орм Room которая под капотом использует sqlite. Думаю, стоит ли городить проверки в запросах и в коде ради возможной производительности, или тупо обновлять объект целиком, при этом написав меньше говнокода.
Аноним 04/06/20 Чтв 10:58:29 1712677305
>>1712643
>Он сравнивает побитово? Или как-то магическим образом понимает что это время?

На этапе компиляции определяется тип строкового литерала.

>>1712657
>умаю, стоит ли городить проверки в запросах и в коде ради возможной производительности, или тупо обновлять объект целиком, при этом написав меньше говнокода

Вариант с обновлением всех полей может оказаться даже быстрее, т.к. запрос на обновление меняться не будет и его план выполнения прокешируется.

>Использую андроидовскую орм Room

Сильно зависит от реализации этой штуки, но я бы не задумывался об оптимизации раньше времени.

Аноним 04/06/20 Чтв 13:47:29 1712869306
>>1712657
А что мешает merge делать?
Аноним 04/06/20 Чтв 14:12:04 1712899307
Сейчас столкнулся с интересной хуйней в МуСкле, объясните пожал-ста:
В `хуи` где-то 30к записей (у всех есть ид), в `пезды` 120к (у всех есть ид), в `хуи` есть 20 id, которых нет в `пездах`.
Такой джоин (можно просто на иннер заменить, не важно) занимает 4 секунды:

select from хуи
left join пезды on пезды.ид=хуи.ид
where пезды.ид is null

а такой джоин - 4 минуты:

select
from хуи
left join пезды on пезды.ид=хуи.ид

Как так получается, что из-за всего 20 ид, которые джоинятся с нуллом, запрос начинает значительно дольше работать?
Аноним 04/06/20 Чтв 14:19:20 1712909308
>>1712899
Пардон, не то написал, первый запрос выглядит вот так, вопрос тот же:

select ★ from хуи
left join пезды on пезды.ид=хуи.ид
where пезды.ид is NOT null
Аноним 04/06/20 Чтв 14:34:04 1712931309
>>1712899
>хуйней в МуСкле, объясните пожал-ста

С мускулом не работал, но по слухам у вас там есть команда EXPLAIN, выполнив которую ты получишь ответ на свой запрос.

https://habr.com/ru/post/31129/
Аноним 04/06/20 Чтв 15:23:52 1712985310
>>1712931
>>1712899
Хмм, на основе EXPLAIN сделал такое предположение:
так как при джоине столбец пезды.ид расширяется несколькими Null, то index на пезды.ид перестает работать, так как рассчитан только на not null.
Но это хуйня какая-то, я думал сначала по индексам все достается, выполняется джоин и уже потом идет null-extension для строк справа.
Аноним 05/06/20 Птн 02:54:32 1713650311
>>1712899
>>1712985
Так при иннере этой проблемы быть не должно
Аноним 05/06/20 Птн 08:22:22 1713695312
>>1713650
но ведь хуев гораздо больше пезд и пезды очень придирчивы.
Аноним 05/06/20 Птн 12:02:32 1713808313
image.png 1905Кб, 1063x960
1063x960
>>1638710 (OP)
Несколько вопросов, антонсы.

1. MSSQL Always On бывает без листенера? Или подразумевается, что в always on кластере он всегда существует, даже если я не использую балансировку нагрузки (селектов)?

2. Допустим у меня есть готовый кластер MSSQL Always On и есть другая, отдельная бд MSSQL без всяких кластеров, к которой подключено приложение.
Мне надо с минимальным простоем это приложение перекинуть на always on. Соответственно, мне надо как-то перенести данные из старой базы в новый кластер.
Опять же, если с минимальным простоем приложения, то мне нужно заранее как-то зазеркалить/отреплицировать/что-нибудь старую базу в новый кластер. А потом я просто ткну в приложухе, мол конекться не к старой БД, а к новому кластеру и оно сразу законектится и заебись.
Так вот, как мне зазеркалить БД с кластером, чтоб в кластере были те же данные?

С меня 5 кило гречки
Аноним 05/06/20 Птн 12:34:04 1713840314
>>1713650
При иннере проблемы не будет. Но нужен лефт к пездам справа, да и разобраться почему так происходит хочется.
Аноним 05/06/20 Птн 12:42:06 1713850315
>>1713840
Мы тут гадать должны три треда?
Неконструктивно обсуждать запросы без плана. Слишком много вариантов.
Аноним 05/06/20 Птн 15:06:14 1713925316
>>1713840
Отфильтруй сначала в CTE, а потом ебани свой жоин.
Аноним 05/06/20 Птн 18:13:37 1714223317
Ананасы, дайте подсказку, пожалуйста?

Объясню на примере. Пусть есть такие таблицы:

1) Таблица "Сотрудники"
---------------------------------------------------------------
| id сотр |Табельный номер| ФИО |
---------------------------------------------------------------
| 0 | 1 |Иванов И. К. |
| 1 | 2 |Иванов И. А. |
| 2 | 3 |Иванов И. Б. |
---------------------------------------------------------------
2) Таблица "Услуги"
-------------------------------------------------
| id усл |Наименование услуги|
--------------------------------------------------
| 0 |Массаж простаты |
| 1 |Отбеливание ануса |
--------------------------------------------------
3) Таблица "Услуги сотрудников"
-----------------------------------------------------------
| id усл сотр | id сотр | id усл |
-----------------------------------------------------------
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 2 | 1 | 1 |
| 3 | 2 | 0 |
-----------------------------------------------------------

Как можно получить такое:
----------------------------------------------------------------------------------
|Наименование услуги| ФИО сотрудников, оказывающих услугу|
----------------------------------------------------------------------------------
| Массаж простаты | Иванов И. К. |
| | Иванов И. Б. |
----------------------------------------------------------------------------------
|Отбеливание ануса | Иванов И. К. |
| | Иванов И. А. |
----------------------------------------------------------------------------------
?

Я даже точно не знаю, как сформулировать запрос для гугла. Студент на Access и C#, если что.
Аноним 05/06/20 Птн 18:16:22 1714230318
Снимок.PNG 11Кб, 335x503
335x503
Снимок1.PNG 7Кб, 432x199
432x199
>>1714223
Все-таки сожрались пробелы. Тогда так. Есть пик1, как получить пик2 ?
Аноним 05/06/20 Птн 18:18:21 1714237319
>>1714230
Сука ебланская про иннер джойн прочитай одну страничку блядь а не спрашиай на двачах сука
даже не одну страничку блядь а достаточно строчек 10 описания и пару примеров, чтобы понять как оно работает еблан сука
Аноним 05/06/20 Птн 18:21:40 1714243320
>>1714237
И как мне иннер джойн здесь поможет?
Аноним 05/06/20 Птн 18:39:57 1714263321
>>1714237
Отвечай давай, или сука ебланская, еблан, сука и так далее здесь только ты.

Мне нужно, чтобы строки были как бы объединены, не было повторов, если такое возможно. На примере - по услугам. То есть в первом столбце - наименование услуги, во втором - все сотрудники, к этой услуге относящиеся. То есть ФИО находятся в одной ячейке, и всего строк в получившейся таблице столько, сколько имеется услуг.

Как здесь одним иннер джойном обойтись, раскроешь секрет?
Аноним 06/06/20 Суб 04:43:21 1714769322
>>1714263
Ебать ты далбаеб братишка.
пиздуц от суда нахуй, пока не обоссали


Аноны не помогайте этому тупому, агрессивному чухану. Мало того что в гугле забанен, так еще и хамит.
мимокрок
Аноним 06/06/20 Суб 05:56:15 1714775323
>>1714263
Боюсь, что такое средстами Access не сделать.
Если бы была более навороченная СУБД, то можно было бы примерно так:
1. Джоинами делаешь таблицу
Наименование услуги | ФИО сотрудника
2. Делаешь string_agg/group_concat/listagg/костыль через конверсию в xml (зависит от СУБД) на ФИО сотрудника. группируя по наименованию услуги.

Возможные грабли: услуги с однаковыми названиями, услуги без сотрудников, решение надо будет чуть подкорректировать.
Аноним 06/06/20 Суб 06:55:00 1714791324
Аноним 06/06/20 Суб 09:10:35 1714804325
Аноним 06/06/20 Суб 15:31:24 1714956326
image.png 34Кб, 490x370
490x370
Приветик.
Подскажите, почему при соединении двух таблиц вывод получается с дублями? У них разное число строк, может в этом дело (хотя у одной таблицы 4 строки, у другой - 2, а на выходе их 6.)?
Аноним 06/06/20 Суб 15:40:06 1714967327
>>1714956
Без ON у тебя cross join, который джойнит все со всеми.
Аноним 06/06/20 Суб 15:47:43 1714976328
>>1714967
>>1714956
Да, ты типо пришёл в проститучноую и вместо одной шлюхи, заказал оргию.
Аноним 06/06/20 Суб 18:58:14 1715063329
>>1710026
>В итоге получится, что после первой транзакции список 1, 2,3 ... 100 превратится в 1,2,3,..99, а вторая транзакция превратит его в 1,2,...99,101. Ну и само собой это не единственный вариант такой коллизии, могут быть ещё в варианты с присвоением одного и того же номера двум элементам одновременно.

Бамп вопросу
Аноним 06/06/20 Суб 19:12:22 1715078330
>>1715063
Мне кажется эта задача для оконных функций. Каким-нибудь rownumber
Аноним 06/06/20 Суб 19:36:51 1715107331
>>1715063
Если уж хочется без явных блокировок, то думаю, что стоит посмотреть, как делается lock-free linked list в памяти и попробовать то же самое реализовать в БД: ведь CAS там есть.
Но неужели нельзя просто брать блокировку на весь плейлист?
Аноним 06/06/20 Суб 22:42:42 1715249332
>>1714775
>>1714791
>>1714804
Спасибо.

>>1714769
Я и сказал, что не знаю, как сформулировать запрос гуглу, чтобы выйти на то, что мне нужно. Попросил подсказать, ни к чему не принуждал. И в итоге на меня наехал какой-то дурачок, который даже не разобрался, в чём суть. Всё, что я сделал - ответил ему тем же и поставил на место с его советами не по делу. А тот и замолчал - спесь сбилась, видимо. Ну ничего, будет думать в следующий раз и подбирать выражения, если не нравится, когда действуют его же методами.

Не считаю, что был не прав. И агрессивный здесь точно не я.
Аноним 07/06/20 Вск 03:14:49 1715405333
>>1715078
>Мне кажется эта задача для оконных функций. Каким-нибудь rownumber

Не вижу как это может помочь.

>>1715107
>Но неужели нельзя просто брать блокировку на весь плейлист?

Каким образом?
Аноним 07/06/20 Вск 04:52:20 1715414334
>>1715405
Завести таблицу с id всех плейлистов,
При модификации элементов одного брать блокировку на строку из этой таблицы.
Аноним 07/06/20 Вск 06:28:20 1715420335
>>1715405
Строить логику не на изменении записей, а на выборке. Делать rn по дате обновления например, в таком случае обновленные будут иметь 1, а более старые 2. Т.е. перенести логику на уровень возврата результатов, а не на уровень самой таблицы. Можно делать по двум полям порядковй номер и дата обновления.
Аноним 07/06/20 Вск 13:50:16 1715568336
>>1715414
>При модификации элементов одного брать блокировку на строку из этой таблицы.

У меня нет возможности блокировать отдельные строки. Сейчас я обхожусь тем, что блокирую (UPDLOCK) все данные в плейлисте (технически в таблице-связке между плейлистами и песнями), откуда идёт перемещение, и в плейлисте, куда идёт перемещение, но это не защищает меня от того, что другая транзакция вставит туда данные. Я пока думаю над тем, чтобы создать некластерный индекс на столбец с id плейлиста и позицией в нём и блокировать данные с UPDLOCK,HOLDLOCK.

Аноним 10/06/20 Срд 05:11:54 1718332337
Как грамотно отслеживать изменения в бд?

Интересуют в первую очередь процедуры и вью. Кто, когда и что.
10/06/20 Срд 09:18:24 1718439338
>>1718332
никак.
хотя есть вагон платных тулзов типа dbforge.
натравил на вчераший бекап и сверяешь.
Аноним 10/06/20 Срд 12:00:06 1718503339
>>1718332
>Как грамотно отслеживать изменения в бд?
>Интересуют в первую очередь процедуры и вью. Кто, когда и что.

Гугли по слову audit, в зависимости от используемой СУБД должны быть средства подписаться на события создания/удаления/изменения объектов БД (а так же выдачу прав и всё остальное, что тебя может интересовать). После этого регулярно читаешь этот лог и делаешь замечания программистам, которые забывают внести информацию о том, что они поменяли хранимку или вьюшку в связи с таким-то тикетом в комментарий в её заголовке и/или закоммитить скрипты.
Аноним 11/06/20 Чтв 21:51:46 1719912340
>>1718332
> Как грамотно отслеживать изменения в бд?
Сменить пароль, поставить git и дженкинс, настроить CI/CD, просить кидать МР на себя.
Аноним 12/06/20 Птн 14:33:53 1720359341
Аноним 12/06/20 Птн 14:43:39 1720370342
>>1720359
СУБД какая? Это важно, так как функции работы со строками зависят от СУБД.
Может ли между значениями быть несколько пробелов?
Аноним 12/06/20 Птн 15:19:53 1720420343
>>1720370
Postgresql
А где пробелы? В списке, куда мы хотим группировать по 3 значения?
Аноним 12/06/20 Птн 16:10:21 1720465344
Аноним 12/06/20 Птн 17:09:45 1720534345
>>1720359
Чот проиграл от этих 'сложных' задач, которые решаются простым подзапросом.
Аноним 12/06/20 Птн 18:48:15 1720628346
>>1720465
>>1720534
Вы вверх крутаните и увидите начало. Там суть в том, чтобы для каждого col1 вывести список из 3 соответствующих ему col2, при этом если для col1 больше 3 col2, то это делается в несколько строк
Аноним 12/06/20 Птн 19:01:32 1720637347
Аноним 12/06/20 Птн 19:11:25 1720647348
>>1720637
Во, это уже ближе к тому, что я хочу. Теперь осталось добиться того, чтобы ещё вывелась строка:
col1 col2
suka d
Аноним 12/06/20 Птн 19:17:18 1720652349
Аноним 12/06/20 Птн 19:19:09 1720655350
>>1720652
Тонны нефти тебе, достопочтенный анон!
Аноним 12/06/20 Птн 19:20:42 1720657351
>>1720655
Рекомендую порешать задачи на sql-ex, чтобы легко щёлкать такие задачи.
Аноним 12/06/20 Птн 20:24:58 1720736352
>>1638710 (OP)
В Postgres (с которой общаюсь посредствам django orm) в одной из таблиц есть поле is_active, оно BOOL: true или false, приходятся часто выбирать только активные объекты (is_active == true), какой индекс туда лучше заебошить?
Аноним 13/06/20 Суб 00:46:17 1721065353
Аноним 14/06/20 Вск 04:43:56 1722148354
image.png 62Кб, 1336x411
1336x411
Ребят. подскажите пожалйуста, не работает триггер, подскажите в чём ошибка? Может знает кто...
DELIMITER $$
CREATE
TRIGGER Orders_Trig BEFORE AFTER INSERT OR UPDATE
ON orders
FOR EACH ROW BEGIN
IF:(NEW.SUMMA>10000)
THEN
UPDATE strakhovka SET Cena_strakhovki = 0 WHERE (ID_Car=:NEW.ID_Car)
END IF;

END$$

DELIMITER ;
Аноним 14/06/20 Вск 21:56:59 1723033355
Аноним 15/06/20 Пнд 13:43:18 1723585356
Screen Shot 202[...].png 54Кб, 704x376
704x376
Помогите ньюфажине. Как составить запрос "сколько у какой страницы за последнюю неделю было посещений с уникального айпи"? Если один айпи посетил страницу за эту неделю несколько раз, то засчитывается как одно посещение.
Аноним 15/06/20 Пнд 14:52:57 1723669357
Аноним 15/06/20 Пнд 15:00:47 1723678358
>>1723669
GROUP BY ip не сработает, потому что тогда он возьмет только первую посещенную страницу, даже если посещено было несколько
Аноним 15/06/20 Пнд 15:04:42 1723681359
>>1723678
ну сделай же group by page,ip;
неужели не очевидно?
Аноним 15/06/20 Пнд 15:26:03 1723707360
>>1723681
Ну я ж ньюфаг.

SELECT COUNT(DISTINCT ip) FROM table GROUP BY page
сработал. Это то же самое, что и двойной GROUP BY?
Аноним 15/06/20 Пнд 18:22:39 1723945361
Читаю документацию postgres про многопоточность и что-то не догоняю. Так в каком уровне изоляции можно соблюдать принцип читатель-писатель и не волноваться за некорректные снапшоты?
Аноним 15/06/20 Пнд 19:52:38 1724010362
>>1723945
Что за принцип читатель-писатель?
Это как read-write блокировка: Или это producer-multiple consumers, где один процесс создаёт записи, каждую из которых должен обработать только один из потребителей?
Аноним 15/06/20 Пнд 20:22:21 1724028363
>>1723707
Нет.
То ли мне лень понимать тебя, то ли ты неверно думаешь.
Аноним 17/06/20 Срд 14:53:32 1726125364
Какой есть аналог aws для бомжей?
Аноним 17/06/20 Срд 16:56:46 1726217365
Аноним 17/06/20 Срд 18:20:54 1726305366
Аноним 17/06/20 Срд 18:25:11 1726319367
Аноним 17/06/20 Срд 21:29:16 1726466368
Аноним 17/06/20 Срд 22:02:56 1726505369
>>1726125
Смотря что тебе нужно от AWS. Если нужны просто VPS, то самый дешевый hetzner. Есть почасовая оплата.

>>1726319
Кластер из малинок - это, конечно, круто. Но малинка довольна слабая. И я даже не уверен, что малинка превосходит типичные компьютеры с x86 по отношению производительность/$.
Аноним 17/06/20 Срд 22:39:23 1726557370
>>1726125
Охуенно сформулированный вопрос, учитывая, что а авс дохуилиард сервисов.
Мой внутренний прорицатель осознал, что вопрос задан в треде бд, а потом послал тебя нахуй.
Аноним 18/06/20 Чтв 19:11:19 1727504371
maxresdefault.jpg 118Кб, 1280x720
1280x720
Привет. На связи джун-фулстек с проектом на ms sql server'ах 2014+. В последнее время все чаше нахожу себя пишущим сложные (для меня) запросы с множеством условий, джойнов, групировок, оконных функций, юнионов и т.п. и строгими нуждами по скорости выполнения и потреблению ресурсов. Потому возник вопрос: есть ли какая литература, чтоб SELECT'ты выполнялись молниеносно и потребляли мало памяти, merge и update не дедлочил? А может заговоры порекомендуете?
Аноним 19/06/20 Птн 00:05:45 1727687372
Гайз есть кто живой? Пишет зеленый, никогда раньше не сталкивался c базами данных, по этому прошу помощи.
Кину вам на карту 200р (хахах, я понимаю это мало, но больше не могу дать) за помощь в одном деле, работы максимум на 10 минут.

У кого есть возможность и желание помочь, пишите в телегу:
@vovafist
Аноним 19/06/20 Птн 00:08:13 1727689373
>>1727687
Пиши сразу вопрос тут
Аноним 19/06/20 Птн 00:12:23 1727691374
>>1727689
лучше в телегу, это личное, это другое...
Аноним 20/06/20 Суб 03:51:31 1728677375
>>1727691
Взломать вконтакте?
Аноним 20/06/20 Суб 11:10:59 1728758376
>>1728677
нет, кстати за 2 дня никто не откликнулся, было две простые задачи на выборку. (спросите почему я их сам не решил, я был на работе оба дня)
Аноним 20/06/20 Суб 15:48:25 1728979377
>>1728758
Потому что всем лень писать тебе в телегу.
Написал бы задачи тут, можно чуть в видоизменённом виде - поменяв названия таблиц и столбцов, быстро бы получил ответ.
Аноним 21/06/20 Вск 12:56:30 1729510378
Хочу написать магистерскую диссертацию на тему баз данных. Я вообще фулстак разработчик, что касается баз данных, то частенько приходится иметь дело с ораклом.
И вот я решил что поскольку тема баз данных очень обширная, то можно будет какое нибудь направление исследовать и написать выпускную работу
Аноны, может вы можете предложить какую нибудь тему? Или может кто уже писал подобные работы
Аноним 21/06/20 Вск 14:58:34 1729615379
>>1729510
Отвечаю в треде про постгрес не про постгрес, но для себя в базах данных я нашёл https://github.com/mit-pdos/noria.
Интересная поделка, которая оптимайзит запросы, храня у себя materialized views для тех запросов, что ей уже встречались. В README репозитория есть ссылка на пейпер, на мой взгляд, про это можно интересно рассказать.
Аноним 21/06/20 Вск 15:05:57 1729623380
Аноним 22/06/20 Пнд 16:54:21 1730699381
c1VVhRytnA.jpg 99Кб, 792x1188
792x1188


SELECT AccountID,AccountEnabled,AllowAdmin,AllowAlertManagement,AllowTeCustomize,AllowTeReportManagement,
AllowTeAlertManagement,AllowPeUnmanage,AllowPeDisableAction,AllowSeDisableAlert,AllowSeDisableAllActions,AllowSeEventClear,AllowXeMapManagement,AllowXeNodeManagement,AllowMonReportManagement,AllowMonUnmanage,AllowViewCopCheck
FROM



Можно ли в T-SQL как-нибудь заменить такую простыню из почти одинаковых столбцов на маску?
Что-то типа Select 'Allow%' From (пробовал, не работает)
Аноним 23/06/20 Втр 00:55:06 1731022382
гайз, нужна хелпа. Суть задачи.
У меня есть некий запрос, который вовзвращает IDшники из некоторой таблицы. Количество таких айдишников много больше чем CHUNK_SIZE = 10000. Мне надо чанками эти айдишники поочереди записывать во временную таблицу tmp_some_ids (id INT), и вызывать процедуру, которая работает с этой временной таблицей (если кому интересно, эта процедура добавляет в эту тублицу еще одно поле, в котором хранится некоторые значения соответствующие ID). Потом из этой темповой таблицы выгружать полеченные данные, обработать их. И опять залить следующий чанк в tmp_some_ids, и так в цикле пока я не обработаю все записи с первого запроса.
ТАк вот у меня есть 3 стула:
1 и самый топорный) выгружить все id в память в ruby скрипте, далее рубями уже поделить все записи на чанки, и запихивать их в цикле во временную таблицу и далее по алгоритму
2) создать/очестить таблицу, к первому запросу добавить LIMIT ${page_number CHUNK_SIZE}, ${(page_number + 1) CHUNK_SIZE} и этот селект инсертить в tmp_some_ids. И в рубях в цикле инкрементить page_number + 1 пока количество заинсерченных данных не меньше CHUNK_SIZE.
3) Похожу на п. 2, только вместо лимитов использовать условие AND WHERE id > ${MY_LAST_INSERTED_ID} и так мне после каждого инсерта надо запоминать MY_LAST_INSERTED_ID = select max(id) from tmp_some_ids для следующей итерации.

Анон, на какой стул сам сядешь, на какой мать посадишь?
Аноним 23/06/20 Втр 01:02:42 1731035383
>>1731022
Мои же мысли по этим пунктам таковы:
1) тип придется генерить инсерт insert into tmp_some_ids (id) values (${stored_ids[0]}), (${stored_ids[1]}), ... (${stored_ids[CHUNK_SIZE-1]) что как на мой взгляд залупа полная.
2) выглядит норм, но хз как на уровне mysql норм не норм, по сути он передрачивает один и тот же запрос много раз формируюя чанки (возможно я не прав).
3) выглядит тоже норм, но надо делать все время лишний запрос чтобы все врямя получать самый большой айди во временной таблице.
Аноним 23/06/20 Втр 01:34:57 1731066384
>>1723681
Тогда мы получим уникальные пары столбцов page, ip и их count, что будет соответствовать количеству посещений с каждого ip на каждую страницу.
>>1723585
>>1723707
Типо того - это НЕ ТОЖЕ САМОЕ что и group by page, up и это то, что тебе нужно - ты группируешь строчки по имени страницы и дальше для каждой строчки считаешь количество уникальных айпишников в визитах.
Аноним 24/06/20 Срд 02:23:58 1732321385
bk2VegYLTA.jpg 335Кб, 1333x2000
1333x2000
Аноним 26/06/20 Птн 17:58:39 1734671386
>>1732321
Пилишь динамический запрос который выбирает нужные поля по шаблону их системных таблиц.

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Foods'
AND table_schema = 'YourDB'
AND column_name LIKE 'Vegetable%'
Аноним 27/06/20 Суб 13:02:31 1735134387
Скулы, здрасте, подскажите ресурсы для тренировки по типу hackerrank, но на русском, пожалуйста.
Аноним 27/06/20 Суб 14:52:31 1735196388
Правда ли Postgres настолько охрененна среди РСУБД, как он ней говорят?
Аноним 27/06/20 Суб 21:37:02 1735484389
Аноним 27/06/20 Суб 22:35:56 1735537390
Аноним 28/06/20 Вск 00:13:44 1735582391
Посоветуйте книгу про базы данных, где поясняют разницу между SQL и NoSQL подходами. С меня нихуя
Аноним 30/06/20 Втр 16:13:19 1737957392
Безымянный.png 82Кб, 1490x886
1490x886
Добрый день.

Делаю сейчас задание

мой код: https://pastebin.com/zNR1ymSh

правильный код: https://pastebin.com/nFYxdG0w

Результаты выходят идентичные, но проверку не прохожу. Не могу понять, в чём мой косяк? Потому что не добавляю в группировку e.store_id?

Аноним 30/06/20 Втр 21:47:55 1738428393
Подскажите, пожалуйста, как разумнее соединить таблицу организаций с контактами организации, если в контактах может быть что угодно (куча специалитов, которые абсолютно разные в различных организациях)
Аноним 01/07/20 Срд 04:19:22 1738609394
Допустим, имеется некая таблица, изображающая производственные цепочки: если сепулька A собирается из сепулей B, C и D, то в поле parent_id у B, C и D будет стоять айдишник в базе хуйни A.

Вопрос: как наиболее эффективно протестить такую таблицу на наличие бесконечно рекурсивных связей, то есть чтобы подкомпонент хуйни C не мог являться компонетом A?
Аноним 01/07/20 Срд 04:20:45 1738610395
>>1738428
Это нзывается развязка many2many.
Отдельная таблица из двух полей - айди шпециалиста и айди организации из соответствующих таблиц.
Аноним 01/07/20 Срд 08:01:59 1738640396
>>1737957
а что это за тренажер?
Аноним 02/07/20 Чтв 08:02:44 1739639397
Аноним 03/07/20 Птн 23:20:08 1741231398
>>1638710 (OP)
Как именно работает та же Postgres? В качестве демона? Я когда установил ее у себя в Убунту и работал с ней посредствам Django ORM, никогда напрямую ее не запускал... Это Джанго под капотом "запускает" сервер Postgres или порт 5432 (по умолчанию) доступен с самого начала старта ОС?
Аноним 03/07/20 Птн 23:27:32 1741236399
>>1741231
Да, сервер запускается системой как служба, у тебя только клиент.
Аноним 04/07/20 Суб 07:01:19 1741305400
>>1737957
Что-то лень вникать, но на первый взгляд различимые в групбае, в эталонном примере, берут ещё 2 поля, т.е. если у тебя по этим полям будут другие значения, у тебя будет больше строк.
Аноним 04/07/20 Суб 15:16:09 1741690401
>>1739639
Это рили для совсем начинающих? Ты не шутишь? Капец.

Тредик кого на ютабчике посоветуете для погружения?
Аноним 04/07/20 Суб 17:53:30 1741920402
Аноним 04/07/20 Суб 19:26:22 1741985403
>>1741920
Храни тебя нормализация, спасибо
Аноним 04/07/20 Суб 19:44:41 1741998404
bump
Аноним 04/07/20 Суб 20:29:40 1742044405
У меня есть куча постов (Post) каждый из которых относится к одной из двух категорий, а внутри каждой из этих категорий будет 2 подкатегории
По какому принципу лучше всего организовать структуру БД? (Postgres, если что) ManyToMany к подкатегориям, каждая из которых имеет ForeignKey на одну из категорий? Или это нерационально? (постов в распоряжении несколько тысяч, в некоторых случаях поле category может канешн быть null, но это встречается редко)
Аноним 05/07/20 Вск 08:59:39 1742263406
screenshot2020-[...].png 1104Кб, 2272x2246
2272x2246
анон была проблема с mysql переустановил workbanch, но теперь не виду свои схемы как их вернуть то теперь?
Аноним 05/07/20 Вск 09:21:03 1742270407
>>1742044
Да таблица категория и таблица подкатегория. Ну вобще задача попахивает мдм системой
Аноним 05/07/20 Вск 14:02:32 1742470408
>>1638710 (OP)
Товарищи, возникло желание поискать себе подработку-халтуру.

Что-то такое, что будет занимать пару-тройку часов в будние дни и столько же в выходные. У меня коллеги - админы, так и работают - все время на основной работе + какое-то время на второстепенный проект.
Но проблема в том, что я как админ хорошо если чуть выше джуна. Мне приходилось и сейчас приходится иногда выполнять администраторские задачи, с терминалом и unix проблем нет, но человек который занимается этим профессионально сделает эти задачи быстрее и качественнее.

Мое направление больше соотвествует - системной разработке и архитектуре на стыке БД и ОС, оптимизация, немного етль.

И вот вопрос: можно ли по своему направлению найти part-time подработку или фриланс, на каких сайтах-ресурсах лучше искать? Если все-таки искать подработку по админским задачам, то где лучше смотреть варианты, на каких источниках?

Смотрел upwork и freelance.ru но там дичь какая-то одна по типу правки экселек. Может неправильно искал.
Аноним 05/07/20 Вск 15:58:04 1742555409
Почему Postgres может в DROP CONSTRAINT IF EXISTS, но не может в CREATE CONSTRAINT IF NOT EXISTS ?
Аноним 05/07/20 Вск 16:46:16 1742612410
Аноним 05/07/20 Вск 16:59:03 1742637411
Аноним 05/07/20 Вск 17:16:11 1742674412
Аноним 05/07/20 Вск 17:28:03 1742686413
>>1742674
На этапе создания таблицы нет смысла проверять констрейнты на наличие, потому что их гарантировано не будет, поэтому по твоей ссылке об этом ни слова нет.
Аноним 05/07/20 Вск 22:18:12 1742919414
image.png 29Кб, 1346x236
1346x236
>>1741690
Двачик я смог, было сложно с агрегатными ф-ями и соединениями, но вроде одуплил что там куда.
следующий этап sql-ex
работаем.
Аноним 05/07/20 Вск 23:09:24 1742948415
image.png 277Кб, 355x499
355x499
image.png 208Кб, 381x499
381x499
>>1735582
>где поясняют разницу между SQL и NoSQL

Это будут две книги.

Первую прочитай от корки до корки и прям зубри нахуй. Это компьютер саенс, там есть по базам всё что только нужно.

Та шо с кабанчиком - это по NoSQL. Там во второй главе вроде было сравнение, но для него тебе надо изначально понять тонкости sql.

Пойми их и будешь крутым челом. Этого в универах часто не учат, к сожалению =.=

Аноним 06/07/20 Пнд 14:59:43 1743188416
>>1742948
А Дейт уже не в моде?
Аноним 06/07/20 Пнд 17:10:46 1743258417
Аноним 06/07/20 Пнд 19:34:25 1743357418
>>1742948
Достаточно навернуть вводную к какому-нибудь MongoDB, чтобы понять для чего нужен NoSQL. Читать эти книги я бы не рекомендовал. Одна слишком большая и нужна разве что только разработчикам СУБД или архитекторам, а вторая - это такое попурри из различных нескучных статеек.
Аноним 07/07/20 Втр 01:26:00 1743519419
Я на виртуальной машине с Дебианом 10 поставил Postgres. Можно ли со своего ПК через pgAdmin приконнектиться к базам на этой ВМ?
Аноним 07/07/20 Втр 01:31:45 1743520420
>>1743519
Надо пробросить порт.
А лучше настроить сеть как bridged и у виртуалки будет свой айпи в локалке.
Аноним 07/07/20 Втр 10:10:46 1743604421
>>1743520
Хостинг с ВМ вообще в ебенях находится, а не на моей машине
Просто я ебался какое-то время в консоли, а потом узнал что есть pgadmin. Когда поставил postgres на своей машине на localhost:5432 то спокойно коннектился к серверу через pgadmin. А если ВМ далеко и я к ней через ssh по ключу коннекчюсь? Что в конфигурации на серве надо настроить чтобы меня не дропало при попытках коннекта, фаэрвол тот же?
Аноним 07/07/20 Втр 13:39:09 1743848422
Котаны, помогите разобраться с функциями времени в PostgreSQL
Нужно подсчитать количество записей в таблице с группировкой по неделям. Всё бы хорошо, но если данных за конкретную неделю не было, то в результате запроса не будет номера этой недели значения 0 во 2й колонке. А хотелось бы, чтобы было.
Ещё лучше чтобы в 1-й колонке писалось что-то вроде 2020-06-01 - 2020-06-07 вместо номера недели.

select
date_part('week', recieved_date) AS week,
COUNT(*) AS emails
from emails_table
where
recieved_date >= '2020-06-01' and
recieved_date <= '2020-06-30'
GROUP BY date_part('week', recieved_date)
ORDER BY date_part('week', recieved_date)

Аноним 07/07/20 Втр 13:46:27 1743863423
>>1743848
Используй generate_series для генерации списка недель и делай left join с имейлами
Аноним 07/07/20 Втр 14:56:21 1743954424
Опять postgresql
У меня есть несколько запросов из разных таблиц, которые выводят количество или сумму нужных мне данных по месяцам.
В каждом запросе есть колонка с месяцами.
Мне нужно горизонтально объединить запросы, чтобы вывести все колонки со всех запросов. Только вот в некоторых запросах нет определённых месяцев. Джойнить их не выйдет, так как нет общих полей.
Аноним 07/07/20 Втр 14:58:43 1743959425
>>1743954
> В каждом запросе есть колонка с месяцами.
> Джойнить их не выйдет, так как нет общих полей
Чем месяц не общее поле?
Аноним 07/07/20 Втр 19:43:17 1744205426
>>1638710 (OP)
Меня постоянно попускают на собеседованиях на вопросах по SQL. Есть какой-нибудь годный тренажер и книжка, которая бы популярно объясняла язык SQL и его хитрости?
Аноним 07/07/20 Втр 20:27:21 1744275427
Создание БД Аноним 08/07/20 Срд 23:33:34 1745485428
Привет парни.
Такой супер вопрос, надеюсь поможете.
В общем вкатываюсь в БД, начинаю работать с MSSMS и в самом начале охуел с такого момента. Как создавать отношения таблиц как вообще проектировать БД. Кого почитать или посмотреть грамотного что бы доходчиво объяснил про нормализацию БД, отношения, про Primary Key и все остальное. В общем буду благодарен за любую инфу.
Аноним 09/07/20 Чтв 12:00:35 1745739429
Аноним 09/07/20 Чтв 16:05:42 1746023430
>>1745739
Чот у него помойка какая-то га канале, кинь линк на плейлист по бд, есди под рукой
Аноним 09/07/20 Чтв 16:52:46 1746097431
В таблице есть поле "категория", категорий всего 4, но записей в таблице несколько тысяч, часто приходится фильтровать данные по конкретной категории, какой индекс выбрать, чтобы это происходило резче? (Postgres 10 если что)
Аноним 09/07/20 Чтв 17:27:30 1746122432
Привет, анон. Помоги с задачей, сам не могу справиться. Привожу минимальное описание. Есть список приборов:
CREATE TABLE IF NOT EXISTS devices (id INTEGER PRIMARY KEY); -- Остальные поля не важны
Для каждого прибора выдаются разрешения, когда его можно использовать. С одной даты до другой. Для них есть отдельная таблица
CREATE TABLE IF NOT EXISTS permits (id INTEGER PRIMARY KEY, use_from DATE NOT NULL, use_to DATE NOT NULL, permission_text TEXT NOT NULL);
Кроме этого есть определённая дата @current_date
Нужно получить таблицу, в которой будет три поля: id прибора, строка is_permited и permission_text, причём:
is_permitted может быть: "NEVER" -- разрешение никогда не выдавалось, "PERMITTED" -- в таблице содержится разрешение, такое, что use_to <= current_date AND current_date <= use_from и "NOT PERMITTED" -- в таблице нет такого разрешения.
permisson_text -- пустая строка (или NULL) для NEVER и NOT PERMITTED и permission_text действующего разрешения для PERMITED.
Сейчас делаю N запросов для получения разрешений для каждого прибора и проставляю в памяти статус, но это очень медленно, в прод такое нельзя пускать.
Буду благодарен как за код, так и просто за идеи.
Судя по всему надо делать JOIN двух таблиц, а потом как-то фильтровать результат, но ничего конкретного я сделать не могу. С SQL начал работать один проект назад.
Аноним 10/07/20 Птн 02:15:25 1746528433
>>1746122
Так ёбана, у тебя между таблицей с приборами и таблицей с разрешениям связь то есть?
Аноним 10/07/20 Птн 12:20:43 1746748434
Аноним 10/07/20 Птн 12:41:08 1746775435
>>1746528
Да, забыл написать.
Сделал через один запрос всех разрешений, дальше разруливаю в памяти — получается меньше секунды. Может и не буду городить всё через запрос.
PostgreSQL Аноним 10/07/20 Птн 13:08:41 1746802436
pg.png 18Кб, 459x735
459x735
Перекатился недавно с MySQL на PostgreSQL. Кластер не настраивал, все конфиги по умолчанию.

Залил таблицу на 3кк строк, но PostgreSQL почему-то как-то странно выборку делает: каждый раз при одном и том же запросе выдаёт в основом следующие строки через N строк, либо некоторые из них вообще перемешивает.

Грешил сначала на DataGrip, потом на место на диске, но это всё не виновато.

Есть идеи, куда копать?
Аноним 10/07/20 Птн 13:24:41 1746811437
>>1746802
Уточню, что когда в таблице было меньше 200к строк, такой хуйни не было.

Так же только что залил в MySQL, там всё хорошо работает,
>select id from records limit 20 offset 500;
всегда выдаёт айдишники с 501 по 520, не перескакивая случайным образом на следующие строки.
Аноним 10/07/20 Птн 13:39:48 1746826438
>>1746802
limit/offset без order by может выдать всё, что угодно.
Так что это никакой не баг, а вполне допустимое поведение.
Аноним 10/07/20 Птн 13:51:51 1746844439
>>1746826
У меня сейчас 10 лет разработки улетели в другую галактику php-макака. Спасибо за разъяснение, вопрос закрыт.
Аноним 10/07/20 Птн 15:15:36 1746981440
>>1746802
Ну ёбана, если данные хранятся в КУЧЕ(heap), они ПРОСТО лежат, и бд дастёт их как ей вздумается, да и вобще юд всегда дастёт как ей вздумается, едис ты другого не попросишь. Если нужно доставать быстро и в нужном порядке, ордер бай, индексы, вот это всё.
Аноним 10/07/20 Птн 15:17:01 1746987441
>>1746775
Делаешь лефт жоин маленькой таблицы к большой, нулевые поля заполняш NEVER, в селекте при помоще CASE заполняшь премитед\нот премитед
Аноним 10/07/20 Птн 20:17:52 1747291442
Аноны, подкиньте идей, куда податься БД-ньюфагу.
О себе:
Активно изучаю БД / прохожу курсы уже несколько месяцев, в резюме на hh уже есть несколько сертификатов по sql и python. Сейчас прохожу длинный курс "аналитика данных" от яндекс.практикум.
30+ лвл. ДС. Опыт работы - не релевантный, но работа аналитическая в финансах (без программирования).
Хочу быть Bi-аналитиком или аналитиком БД, для начала.
Стажёром в 30+ лет не вариант идти, да и вряд-ли возьмут. Откликаюсь на все, что плохо лежит (где-то 50 откликов за 2 недели), резюме смотрят, но ни на одно собеседование так и не позвали. Есть идеи куда и как можно вкатиться?
Аноним 10/07/20 Птн 20:24:32 1747303443
>>1747291
Консалтинг всякий - глоубайт (туда легко попасть), EY или банки - сбербанк, втб.
Аноним 11/07/20 Суб 05:24:49 1747715444
>>1746122
SELECT d.id,
CASE
WHEN MAX(use_from) <= “11.07.2020” AND MAX(use_to) < “11.07.2020” THEN “permitted”
WHEN “11.07.2020” < MAX (use_from) THEN “not permitted”
ELSE “never”
END AS permitted_text
FROM devices AS d
LEFT JOIN permits AS p ON p.device_id (или где там у тебя храниться связь)
GROUP BY d.id

Если разрешений всегда одно (devices permissions one to one), то убери group by и агрегаты. Также не забудь добавить таблицу отношения devices permissions или ссылку на device к permissions.
Аноним 11/07/20 Суб 05:27:33 1747716445
>>1746802
Сортировка.
Нет никакой «дефолтной сортировки» и гарантии соответственно
Аноним 11/07/20 Суб 05:29:15 1747717446
>>1747715
Алсо, считаем что диапазоны разрешений сделаны правильно, данные корректны и в них не может быть мусорного гавна
Аноним 11/07/20 Суб 06:40:23 1747727447
>>1747715
Спасибо, анончик, попробую, как доберусь до офиса.
Я пока сделал всё быстро в памяти, но хочется разобраться в твоём примере
Добра тебе.
Аноним 11/07/20 Суб 08:27:36 1747742448
>>1747715
чот при таком подходе можно говна поесть, если у него есть пересекающиеся пермиты
Аноним 11/07/20 Суб 08:45:35 1747744449
Аноним 11/07/20 Суб 08:47:59 1747746450
>>1747744
Видимо слишком абстрактный варнинг, в общем это и имелось в виду
Аноним 11/07/20 Суб 09:20:40 1747752451
>>1747746
Из-за групбая с полем комент будет проблема
Аноним 11/07/20 Суб 09:25:19 1747754452
>>1746775
>>1746987
Вот как-то так

with one
as
(
SELECT
p.id
,d.polename1
,p.use_from
,p.use_to
,p.premession_text
,coalesce(use_from,'1') as Permit
,row_number() over(
partition by
p.id
,use_from
,use_to
order by
use_from) as rn


FROM devices as d
left join permitsa as p
)
SELECT



id
,polename1
,use_from
,use_to
,premession_text
,CASE
WHEN use_from<=GETDATE()>=p.use_to THEN 'PERMITTED'
WHEN Permit=1, THEN 'NEVER'
ELSE NOT 'PERMITTED'
END as permitted_text

FROM one
where rn=1
Аноним 11/07/20 Суб 09:27:46 1747756453
Аноним 11/07/20 Суб 09:30:04 1747758454