Этого треда уже нет.
Это копия, сохраненная 22 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
15847366478540.jpg9 Кб, 400x400
Распределённый транзакционный баз данных тред /sql/ 1781628 В конец треда | Веб
Очередной баз данных тред,
в котором мы
-Выслушиваем, почему в шапке по-прежнему отсутствует инфа для вкативания
-Разбираемся, почему PostgreSQL - не Oracle
-Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
-Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обещстве
-Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
-Анализируем, как работает поиск вконтакте
-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны
-И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно

Поехали!

Предыдущий тонет здесь: >>1638710 (OP)
2 1781640
Перекатил вашу хуйню.
15896402741520.jpg311 Кб, 764x1080
3 1781686
>>781640
спасибо, няша
4 1781876
а оракл девелопер только по регистрации можно скачать?
5 1781883
>>781876
Зарегайся с 10-минутной почти, и скачивание сразу начнётся по ссылке.
6 1781886
>>781883
Окей, спасибо
Для пользования не надо авторизироваться в программе?
7 1781901
>>781886
Нет.
1597848298173.jpg34 Кб, 676x672
8 1781953
Я спокоен как удав.
sage 9 1781955
>>781953
Бля, тредом промахнулся.
10 1782285
Есть простые и готовые решения по натягиванию ЮЗЕР ФРЕНДЛИ интерфейса на определенные таблицы? Для добавления строк и редактирования существующих. Чтобы ещё можно было настроить доступ, какие столбцы можно редактировать. Типа редактора в pgadmin, но для ОПЕРАТОРА ЭВМ. Проще и меньше свободы. Не хочу делать лишнюю работу по созданию редактора таблиц, если есть что-то подходящее.
11 1782288
>>782285
Reporting services/Ssas tabular
12 1782289
>>782288
А, еще powequery
13 1782290
>>782289
Мне бы для постгреса.
14 1782291
А, вроде можно с постгресом.
15 1782407
шо у нас тут есть люди с сертификатами оракла?
16 1782427
>>782407
почему ты думаешь, что люди с сертификатом могут быть чем-то полезны в интернете?
Candidate-Apprentice-DataAnalyst-Copy.jpg90 Кб, 641x427
17 1782429
>>782285
так и не делай, лол.
Используй google spreadsheets. Данные в программу закачивай через веб в виде csv. Результаты тоже через api в гугл-таблицы выдавай.
18 1782491
>>782427
Мне интересно как повлияла ачивка на трудоустройство и прочее
19 1783556
>>782491
С каких пор у дб господ проблемы с трудоустройством?
20 1783575
>>783556
с того самого момента как функции ДБА может выполняет любой нетупой программист?
с того самого момента, как государственное ИТ,где смотрели бы на сертификаты, стало скопищем долбоебов, а деньги платят лишь на зарубежных галерах?
image.png13 Кб, 668x223
22 1783583
Это серьезно такие зп при 30 годах опыта?
image.png9 Кб, 354x198
23 1783584
24 1783974
А есть какой-то читшит по базовым вещам sql?
Предстоит собес на жуниор дата инженера.
25 1784490
Оптимизаторы, что будет эффективнее в постгрес?
1 вариант) Таблица A: столбец id инт, столбец b_id - массив интов. Таблица b: столбец id int. Нужно поджоинить по элементам массива b_id таблицу b по индексам.

2 вариант) Таблица А, таблица Б: столбец id - инт. таблица С: столбец a_id int, столбец b_id int. Ну и через таблицу С джоиним таблицу Б.

Массив интов не меняется, как и таблица С.
Что думаете по этому поводу и почему?
Замеры провести не получается =(. Не умею я это делать
27 1784559
>>784557
Мне кажется, разворачивание массива затратнее. Да и выглядит второй вариант лучше.
28 1784601
Вот бы айти тяночку эххх
изображение.png217 Кб, 300x245
29 1784668
>>784601
откуда вы блять лезите
30 1784759
>>784490
С джоинами конечно второй вариант, реляционные субд для таких вещей и придумали
31 1784774
>>784759
>>784557
>>784559

Спасибо! Оставлю тогда второй вариант
32 1787536
Как реализовать одним запросом подсчет однородных данных (цены) по интервалу (5000)?
Т.е. сделать select с разбивкой на этот интервал на всю таблицу (до 5000; 5000-10000; 10000-15000...)
Я не работал с SQL ранее.
Пожалуйста помогите.
33 1787717
>>787536
сгенерировать таблицу интервалов и заджоинить
34 1787723
>>787717
или делить на 5000 и смотреть целую часть, и на основании этого ставить метку. Смотря что там в исходных данных и какой конкретно результат нужен.
35 1787781
Нужен ли в каждой таблице столбец id, выполняющий исключительно роль первичного ключа, если эту роль может выполнять столбец реальных данных? На stackoverflow топовый ответ — нужны. Я вот думаю, что это ухудшает читаемость, больше запутанности, сложнее писать всякие джоины, длиннее запросы. С другой стороны, подобие юнификации. Ну и без id порядок вставки теряется — наверное, единственная потеря информации. А что думают пацаны с двача?
36 1787787
>>787717
>>787723
Благодарю. Буду думать.
37 1787810
>>787787
В новой таблице intervals_table делаешь два столбца start_interval и end_interval, заполняешь интервалами. Потом select * from prices_table join intervals_table on prices_table.price between intervals_table.start_interval and intervals_table.end_interval order by prices_table.price.
38 1787816
>>787781
лучше сделать доп поле id в каждой таблице, а на столбец реальных данных повесить индекс с уникальностью
39 1787964
>>787536
google: sql group by range
40 1788145
>>787781
Делаю первичные ключи любого типа, и даже многоколоночные. Большинство таблиц не-связок конечно всё-таки с числовым id, потому что в данных нет уникальности. Но там где можно, почему нет? Нахуя ещё одна колонка с индексом? Это очевидное васянство из разряда обязательной аббревиатуры типа в названии колонки.
41 1788148
Добавлю, что числовой id может работать быстрее в джойнах. Первичный ключ следует выбрать таким, чтобы все внешние ключи на него ссылающиеся, занимали поменьше байт и соответственно легче проворачивались в оперативке. А если у тебя табличка такая, что никто на неё не ссылается, допустим токены какие-нибудь, то можно смело забить хуй и сделать строку с токеном первичным ключом.
144542299817749188.png69 Кб, 800x600
42 1788701
>>787536
>>787717
>>787723
>>787810
>>787964 - просмотрел эту штуку, но я слишком toopoi неопытный гумманитарий для таких колдунств.

Вот к чему пристаковерфловил:
SELECT 5000 ( priceAmount / 5000 ) AS start_range,
5000
( priceAmount / 5000 ) + 5000 AS end_range,
count(*) AS COUNT
FROM price
GROUP BY priceAmount / 5000

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

Я ведь правильно понимаю, что это человеку понятно, если диапазон пустой, то там нет вхождений, а вот роботу это будет непонятно, т.к. он должен обрабатывать подряд все статистические данные? И придется создавать костыли потом, если понадобится считать пустые интервалы (хотя я хз, что там будет потом и какая хотелка будет).
Какая логика считается правильной - больше данных это нормально или не париться о пропущенных значениях?

По поводу создания временной таблицы интервалов:
Я не понял как это делать (пытаяюсь вызвать хоть что-то, ругается на селект из #таблицы, хотя она и считается созданной нормально), но придерживаюсь такой логики, что ее нужно заполнять для СТАРТовых от нуля + 5000, а для КОНЕЧных от 5000 + 5000 и заканчивать таблицу на максимальном значении цены + 5000 , которое есть в таблице с ценами.

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

Чет у меня от логики картинка
<
43 1788769
>>788701
DROP TABLE #tmp
CREATE TABLE #tmp
(ID INT IDENTITY(1,1),value_current int,value_next int)

DECLARE @step int
set @step=5000

WHILE @step < 9000000
BEGIN

INSERT INTO #tmp
(value_current,value_next)
VALUES (@step,@step+5000)
set @step=@step+5000

END;

SELECT *
FROM #tmp

Ну тут временная таблица, а себе генирируй постоянную. С другой стороны там записей ты всего пару тыщ лол не думаю что твоя шарага яхтами торгует, и временной хватит. Как джоинить анон выше уже писал. Если нужны пустые интервал делаешь левое соединение.
44 1788774
>>788701
Кстати вот хороший вариант без всяких временных таблиц.

Select
Range as [Score Range],
Count(*) as [Number of Occurences]
from
Ranges r inner join Scores s on s.Score between r.LowerLimit and r.UpperLimit
group by Range
45 1789603
какой материал пощупать для вката в postgres уровень джуна? типо могу crud операции через консольку но хотелось бы за индексы пояснить
46 1789642
Сап.
Я вкатываюсь в джанго, отдельно sql не изучал, только поверхностно. Ну вот, создаю я бд для хранения бронирований в гостинице. В ней должны быть данные о клиенте (фио, емейл, телефон итд), дата его заселения, дата выезда, где он забронировался (сайт отеля, букинг итд), категория номера и цена. Я правильно понимаю, что у меня будет одна основная таблица со всем этим, но повторяющиеся данные вынесены в другие таблицы и связаны с основной через foreign key? То есть все данные о клиенте будут в таблице "клиенты" и в основной будет просто id из той. Источник брони и категории тоже.
Но вот до меня не очень допирает, а как собственно делаются запросы к таким бд? Вот если мне нужно вывести все данные о брони, что нужно прописать, чтоб взялись данные из таблиц, связанных внешними ключами? Я прост не знаю как загуглить, сорян, наверное тупой вопрос конечно.
47 1789646
>>789642
sql join
48 1789725
Что-то не врубаюсь как именно работают AND и OR внутри JOIN-а

Вот есть у нас что-то вроде:
SELECT op_entries., op_entries_status.
FROM op_entries
LEFT OUTER JOIN op_entries_status ON op_entries.id = op_entries_status.op_id AND op_entries_status.order_id = 3

Я понимаю когда условие ON одно, что-то типо "ON table_1.id == table_2.key" но что означают эти AND и в особенности OR?
49 1789736
>>789725
Ебать ты далбаеб братишка, шел бы лучше ямы копать.
50 1789743
>>789736
?
Я с БД знакомился лишь год назад в универе, сейчас приперло разобраться почему некоторые query возвращают пустой результат. Что такого-то? Ты что ли сам с пеленок SQL ебашить начал?
51 1789746
>>789725
Та же логика, что у where. Можешь считать это where подзапроса к второй таблице.
52 1789754
>>789746
Или так, джойны в анси89:
select cheta from huita1, huita2 where huita1.fid = huita2.id and huita2.da = 1;
53 1789770
>>789746
>>789754
Хм, логично
А OR сюда как вписывается? SELECT table_1.name from table_1 JOIN table 2 ON table_1.address == 10 OR table_2.session == 4
Мы создадим JOIN со строками где выполняется одно (или оба) из этих условий?
54 1789786
>>789646
Спасибо.
55 1789830
>>789743
Зашквар спрашивать элементарные вещи по базовым дисциплинам. Просто берешь и читаешь учебник. Там все ответы.
Sql - это абсолютно необходимое знание айтишника.
56 1790027
>>789743
Так у тебя наитупейший вопрос, по простой бинарной логике. Если ты неспособен понять таких вещей или экстраполировать их на другую область, то лучше иди копай ямы или принтеры носи.
57 1790069
>>789725
Оно просто проходит по каждому ряду. Если выражение в ON возвращает true - джойнит, иначе - не джойнит.
58 1790218
>>789743
мб поможет
59 1790609
Анончики, помогите!

Таблица в которую пишутся результаты распознавания имеет еще 2 колонки - foreign key с таблицами:
Project (пик 1)
Server (пик 2)

Нужно составить sql запрос, который выведет: дату(можно задать промежуток дат), результат распознавания (АО, человек, положительно-отрицательно), далее для каждого результата распознавания: кол-во за каждую дату (если указан промежуток), длительность всех аудио, проект и сервер.
60 1790610
>>790609
Ах, да, это Postgres.
61 1790622
>>790609
Стесняюсь спросить, где поле с таймстампом в таблицах?
изображение.png5 Кб, 613x40
62 1790967
>>790622
Дико извиняюсь. Вот базовая таблица

и да, duration - тот самый стамп. сейчас форматну
63 1790972
А вообще я правильно понимаю, что если мне нужно хранить временную длительность чего-либо в постгресе - мну нужен тип timestamp?
64 1790974
>>790972
Наебался. interval
image.png360 Кб, 1494x556
65 1791422
>>790609
Вроде написал запрос. Только на синтаксис ругается, на запятую в 4 -й строке. Подскажите как пофиксить, пожалуйста
изображение.png1 Мб, 1146x643
66 1791687
>>791422
Я хуею, додик нашёл буратину который напишет ему запрос, а сам блядь даже запятую убрать не в состоянии
67 1792053
>>791422
шо за шрифт и цветовая подсветка
68 1793126
Блядь почеум у вас шапки нет?
Как вкатываться то?
69 1793212
>>792053
Шрифт, скорее всего, Hack, а подсветка - вот эта хуита: carbon.now.sh
70 1793346
>>793126
Чел, мы тут тхреад не могли перекатить две недели, а ты о какой-то шапке спрашиваешь.
71 1793373
как будто бы на курсах учат перекатывать треды, че вы требуете от нас!!!!
72 1793959
Селект в радость, коммит в сладость, почаны.
Посоветуйте курс на ораклового ДБА нормальный, чтобы КОТИРОВАЛСЯ
73 1794025
>>793959
проходил обучение здесь

orakl-dba-online.ru/register
74 1794058
Чем отличаются разные sql типа oracle или ms или ещё какие есть? Просто обёрткой? Или в самих запросах есть всякое разное?
75 1794067
>>794058
Типа разные СУБД вообще. Если тебя конкретно запросы интересуют, а не внутрянка, то базовый SQL по спеке везде плюс-минус одинаковый, отличаются специфическими функциями. Работа со строками, с датами и т.д.
А вот если тебе нужно погромирование и SP, то тут кардинальные отличие начинается, погугли как выглядит pl-sql (oracle) и t-sql (mssql).
76 1794233
>>794067
Да ну нахуй, процедуры везде одни и те же.
77 1794288
>>794233
Ага, функции в паскале и C++ тоже одни и те же.
78 1794416
>>789736
Ваши родители москвичи? Вы живете в столице?
79 1794431
Подскажите литературу по OLAP DAX Power BI
80 1794434
>>794431
Не надейся особо на местных, тут редко что-то подсказывают или советуют.
82 1794978
Тут есть мамкины DBA? Какое поведение ожидать от 4-х БД вместо 1-ой БД при использованиия MySQL 5.7 Community? Нагрузка распределится или наоборот возрастет на инстанс mysqld?
83 1795188
>>794288
Аналогия не аргумент, мань.
84 1795201
>>795188
Лучше, чем голословное "процедуры везде одни и те же", мань.
85 1795411
>>794978
Твердый и решительный бамп
86 1795747
>>795201
Соси хуй, мань.
87 1795761
Ребята, поясните за pl sql, а конкретно за параметры in, out.
Теорию читаю, но не особо понятно.
Я так понимаю out можно вызывать из другой процедуры?
88 1795816
У меня есть массив id, id автоинкрементится и уникален. Надо найти все записи с этими id в таблице. Select * where id in array пройдется по всем записям, даже если нужно всего 3, например?
Как вытащить таргетно каждую запись за 1 запрос?
89 1795843
>>795816
Если id у тебя ещё и primary key, то для него скорее всего создан индекс. Поэтому обхода всех записей не будет, каждая запись найдётся на O(logN).
90 1795907
>>794978
ебанутый вопрос.
ты на одном и том же сервере раскидал таблички в разных БД?
или запустил 4 раза mysqld, но на одном сервере?

В теории, во втором случае МОЖЕТ возрасти параллелизм.
Но скорее, в твоем тупом случае, никак не изменится, только устанешь переписывать программы.
91 1796062
>>794978
чего добиться то хочешь?
92 1796165
>>796062
Есть application который состоит из нескольких модулей (могут быть запущены или не использоваться). Есть бизнес логика, разделенная в соответствие с задачами. Вот и хочу понять, есть резон все в одной схеме ебашть и засирать таблицами, которые могут быть просто мертвым грузом или же разделить на схемы в соответствие с модулями приложения)
проще говорят модули: A, B,C,D
И будет соответственно 4 БД на одном сервере: A_DB, B_DB, C_DB, D_DB. Проще будет дампы делать по идее и управлять правами.
93 1796168
>>796165
Про нагрузку я уже понял, или интансы запускать или сосать писю, так как ынтерпрайз решение не дадут. Только PG как вариант
94 1796200
>>796165
Просто клади в разные файловые группы. Процессор и память можно маштабировать бесконечно.
1123.png6 Кб, 343x271
95 1797928
Как получить среднее кол-во чеков по дням недели?
Это для кол-во работает Select count(distinct(чек) as кол-во чек from t1 where = месяц
По логике я должен просто сделать так
Select AVG(count(distinct(чек)) as кол-во чек from t1 where = месяц
Или select avg(Select count(distinct(чек) as кол-во чек from t1 where = месяц) as GGG from t1
Хэлп ми
96 1797954
>>797928
Ещё нужен GROUP BY day_of_week.
97 1797962
>>797928
SELECT Месяц, ДеньНедели, AVG([Кол-во чек])
FROM govno
GROUP BY Месяц, ДеньНедели

то ли ты вобще какую-то хуйню наитупейшую спросил, то ли задания не понял
98 1797963
>>797962
* я задания не понял
ййй.png25 Кб, 739x292
99 1797985
>>797962
>>797928
Кол-во чек подсчитывается как сумма уникальных значений
count(distinct № чек).
Теперь мне нужно сделать как среднее количество чеков за день недели. Например среднее кол-во чеков за все понедельники месяца 228, дальше среднее кол-во чеков за все понедельники месяца разбивка на магазины в первом 226 во втором 229 в третьем 250 и тд.
100 1797987
>>797985
Я бы хотел сделать это все одним запросом, но как тупое решение нахожу создании новой таблицы в которой будет хранится кол-во чеков за период
101 1797989
>>797985
А дни недели у тебя где-нибудь есть в таблицах, или только дата?
выв.png9 Кб, 554x290
102 1797991
>>797989
Столбец Дата связан с таблицей Календарь, там хранятся дни недели. Дни неделю я джойню и группирую
103 1797994
>>797991
with govno
as
(
SELECT Дата , COUNT(DISTINCT Чек) as Zalupa
FROM GOVNO
GROUP BY Дата
)

SELECT z.Месяц, z.Дата,z.ДеньНедели, AVG(Zalupa) as Zalupa
FROM GOVNO as g inner join ТАБЛИЦА_КАЛЕНДАЯ as z
on g.Дата=z.Дата
group by z.Месяц, z.Дата,z.ДеньНедели
104 1798052
>>781628 (OP)
Манга по базам данным - нормальная вводная книга или лучше взять что-то более фундаментальное?
105 1798133
>>796165
Ты не сможешь масштабировать или ускорить бд просто переименованием баз. Это не так делается.
dar51hn-ddc71037-07c7-4972-bd63-234b2dca3c9d.png4 Кб, 193x239
106 1798486
Пиздос, открыл для себя блокировки строк при апдейтах. Оказывается можно схватить дедлок всего лишь с помощью транзакций и простых UPDATE, даже без субквери. Даже на классическом примере списали со счёта одного клиента, закинули на счёт другому.
107 1798501
>>798486
И как же словить дедлок?
109 1798510
Как бэкапить базу mysql? mysqldump бэкап заливается на чистую базу уже больше суток. Если на проде всё упадёт - это не вариант. Может снапшоты файловой системы? А если текущая фс не умеет в снапшоты?
Как делают взрослые дяди, если ресурсов на репликацию нет?
110 1798514
>>798510
Чёт как-то долго. Ты там индексы не перестраиваешь на каждый инсерт? Поиграй с параметрами при взятии дампа.
111 1798517
>>798510
чото хуйня какая-то, сколько бд вести?
Покажи запрос бекапа\востановления
112 1798526
Есть один сайт с кучей продуктов. Когда вася покупает один из них - на почту ему приходит doc/pdf-презентация, релевантная купленному продукту, коих довольно много и будет больше. Суть: сделать в таблице с продуктами поле, по содержимому которого можно будет однозначно доставать нужный файл. Причём сделать чтобы было не как говно и при этом без всяких сложностей типа отдельных сервисов, которые будут отдавать эти презентации для своих, и прочей ебалы.
Можно было бы хранить base64 или file:///ссылками прямо в базе, но какое-то внутреннее чутьё меня останавливает.
Вместо базы mysql 8.0, если вдруг это важно.
113 1798530
>>798526
храни url, в чём проблема?
114 1798998
>>798517

> сколько бд вести?


База около 25 гигов. Миллиарды записей. Но на то она и база ведь. Мог и в блокнотик записывать, коль так сложно это всё. 21 век на дворе. Видимо где-то я что-то не не так делаю.
>>798517

>Покажи запрос бекапа\востановления


mysqldump --all-databases --compact --single-transaction -u root -p xxxxxxxxxxxxxxxx > bkp.sql
его потом в другую базу:
mysql -f -uroot -p < bkp.sql
И висит уже больше суток. Пара ошибок в процессе вылезло по датам, но ничего серьезного.
Это же не дело.
115 1799251
>>798998
Целевая база пустая? Дебаг пробовал включать?
116 1799623
>>799251
Была пуста, сначала ещё --no-data залил с созданием таблиц, потом фулл дамп. Вопрос вобщем-то не в этом, а в том, можно ли как-то не тупыми запросами в базу её бэкапить (честно, видится это как самый идиотский способ, который только можно придумать), а бэкапить одним куском, бинарно, то, на чём она лежит, или типа того? Может в том же разделе создать файл с виртуальным разделом, например в btrfs и среплицировать в него, а оттуда уже снапшотом куда угодно... Что-то мне подсказывает, что давно есть много полезных опенсорсных утилит на эту тему.
117 1799791
>>781628 (OP)
Есть набор Отделов (каждый Отдел представлен своей таблицей), к каждом Отделу приписаны Сотрудники (с помощью Foreigh Key), для каждого отдела надо сделать "таблицу соответствий" по типу id_сотрудника -> приоритет_сотрудника
Как это лучше всего намутить? Пока что вижу лишь закинуть поле JSON внутрь Отдела и представить ключи id-шниками Сотрудников и значения - приоритетом
118 1799950
А почему нельзя в таблицу с сотрудниками добавить поле с приоритетом?
>>799791
119 1800109
>>799791
Сделай join table employees_departments employee_id, department_id, priority с уникальным индексом по первым двум колонкам
120 1800544
>>787781
Эдгар Кодд и Кристофер Дэйт как бы говорят, что суррогатный ключ (а это как раз Id исключительно для ключа) - зло. Не совсем с этим согласен, но да, если есть поле, уникальное и неизменяемое со временем, то быть ему ключом. Пример - уникальный код товара. Плохой пример - номер паспорта. А вообще, лучше почитать про нормальные формы, хотя бы про первые три, например тут: https://metanit.com/sql/tutorial/2.2.php, осознать их и уже потом решать, нужен суррогатный ключ или хватит натурального.
121 1800581
>>799791
Знаешь как в postgres поставить check constraint на json-поле? Мне надо проверять чтобы любое значение по ключу было числом, большим нуля
122 1801024
Работаю в энтерпрайзе, в проекте около 2к таблиц, есть дб-админы, и почти сука у 90% там где должны быть FK NOT NULL - нихуя нет, более того, эти мрази ставят строки везде куда могут вместо int'ов, вот просто так дебилы решили, откуда такие мрази берутся?

Как меня уже заебало это нытье НУ ТАМ ЖЕ ЕЩЁ ДАТА НЕИЗВЕСТНА, ПОЭТОМУ NULL - пошли нахуй петухи, у них пол базы данных обосрано в NULL.
123 1801089
>>801024
Почему ты так переживаешь по этому поводу? Базка-то работает? Нагрузку держит? Пользователи счастливы?
124 1801145
>>801089
Во-во. Понаберут зумерье всякое а потом расхлебвают
Большие Дяди с Большими писями по такой херне не загоняются
125 1801205
>>799623
это и есть нормальный способ.

когда делаешь бекап, следует думать не о том как его сделать, а как его будет восстанавливать нанятый после тебя за еду эникей.
1.png26 Кб, 534x811
126 1802858
Допустим WITH с select'ом напишу, но как сделать счётчик?
127 1803179
Чето я сижу туплю и никак не пойму как мне переписать обычный цикл на sql. Но в итоге понял.
128 1803261
>>803179
Просто используй сплитстринг
129 1803381
Как засунуть в строки базы sqlite3 питоновские списки с разным количеством элементов?
130 1803384
>>803381
Сериализуй массив и храни строку.
131 1803388
>>803384
в смысле просто сконвертировать его в строку или под сериализацией понимается что-то еще?
132 1803394
133 1803401
>>803261
А считать можно подзапросом по количеству разделителей(запятых). Ну или n+1
image.png30 Кб, 977x505
134 1803670
Хай. Есть один MySQL в котором лежат хранимая процедура и вызывающий ее триггер на INSERT в нужную таблицу.
Верно ли я понимаю, что при выполнении:
INSERT INTO таблица () VALUES ();
триггер сработает на каждую вставляемую строку, а не единожды в конце этой команды? Если да, можно ли в мускуле добиться поведения триггера как во втором варианте?
School.jpg191 Кб, 1000x520
135 1803864
>>781628 (OP)
Сап, котики! Прошу помощи. Скорее поставить мне мозги, чем написать за меня запрос хотя запрос с объяснением будет в тему.
Есть БД "ШКОЛА" (пилил в oracle developper).
(PK) - первичный ключ, (FK) - внешний ключ.
Сущности в БД:
-classes (классы) [Id (PK), Lvl (название класса 1А, 2Б...), QtyStudents (кол-во учащихся]

-subjects (предметы) [Id (PK), Subj_Name (Матем, Русский...), Teacher_Id]

-teachers (учителя) [Id (PK), Last_name, First_Name, Middle_Name]

-lessons (уроки "занятия") [Id (PK), Lesson_Date, Teacher_Id (FK), Class_Id (FK), Subj_Id (FK), Fullness (посещаемость на этом уроке)]

Только таблица lessons связана с тремя остальными через внешний ключ. Оставшиеся три таблицы между собой не связаны (например teachers не связана напрямую с subjects).

Надо написать запрос, который выводит:
фамилию и имя учителя, предмет за месяц, с наименьшей посещаемостью. Т.е. одну строку с наименьшим значением (Fullness/QtyStudents) 100%.

Джва часа рожал, нашел как выбрать минимальный процент. Но, как его обернуть в запрос, чтобы подтянулась фамилия, имя и предмет - не осилил. Плеас, хэлп.
Вот этот селект выводит минимальный процент посещаемости:
SELECT MIN(100
l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id);

Пытаюсь обернуть вот так:
SELECT t.Last_Name, t.First_Name, s.Subj_Name,
(
SELECT MIN(prc)
FROM
(SELECT 100*l.Fullness/c.Qty_Students prc
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON(l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
)
)
FROM lessons l join classes c ON (l.class_id = c.id)
JOIN teachers t ON (l.Teacher_Id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
WHERE l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
AND l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD');

Выводит все фамилии, имена, предметы и напротив каждого пишет один и тот же минимальный процент. Типа:
Иванов, Иван, Матем, 55%
Петров, Петя, Литра, 55%
Сычёв, Вася, Русиш, 55%
School.jpg191 Кб, 1000x520
135 1803864
>>781628 (OP)
Сап, котики! Прошу помощи. Скорее поставить мне мозги, чем написать за меня запрос хотя запрос с объяснением будет в тему.
Есть БД "ШКОЛА" (пилил в oracle developper).
(PK) - первичный ключ, (FK) - внешний ключ.
Сущности в БД:
-classes (классы) [Id (PK), Lvl (название класса 1А, 2Б...), QtyStudents (кол-во учащихся]

-subjects (предметы) [Id (PK), Subj_Name (Матем, Русский...), Teacher_Id]

-teachers (учителя) [Id (PK), Last_name, First_Name, Middle_Name]

-lessons (уроки "занятия") [Id (PK), Lesson_Date, Teacher_Id (FK), Class_Id (FK), Subj_Id (FK), Fullness (посещаемость на этом уроке)]

Только таблица lessons связана с тремя остальными через внешний ключ. Оставшиеся три таблицы между собой не связаны (например teachers не связана напрямую с subjects).

Надо написать запрос, который выводит:
фамилию и имя учителя, предмет за месяц, с наименьшей посещаемостью. Т.е. одну строку с наименьшим значением (Fullness/QtyStudents) 100%.

Джва часа рожал, нашел как выбрать минимальный процент. Но, как его обернуть в запрос, чтобы подтянулась фамилия, имя и предмет - не осилил. Плеас, хэлп.
Вот этот селект выводит минимальный процент посещаемости:
SELECT MIN(100
l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id);

Пытаюсь обернуть вот так:
SELECT t.Last_Name, t.First_Name, s.Subj_Name,
(
SELECT MIN(prc)
FROM
(SELECT 100*l.Fullness/c.Qty_Students prc
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON(l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
)
)
FROM lessons l join classes c ON (l.class_id = c.id)
JOIN teachers t ON (l.Teacher_Id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
WHERE l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
AND l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD');

Выводит все фамилии, имена, предметы и напротив каждого пишет один и тот же минимальный процент. Типа:
Иванов, Иван, Матем, 55%
Петров, Петя, Литра, 55%
Сычёв, Вася, Русиш, 55%
136 1804145
>>803864

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

Соотвественно просто сначала обогащаешь таблицу нужными полями т.е просто джоинишь ВСЕ таблицы.
Потом добавляешь вычисляемое поле которое выделает часть месяца из даты, и большую таблицу группируешь по месяцу+учителю, в групировки делаешь наполняемость на количество, или что ты там посчитать хотел.
137 1804187
>>803670
ты в яндекс гуглишь?
сделай триггер FOR EACH ROW
Когда-то давно в mysql это не работало, но сейчас все ок.
138 1804376
Насколько хорошо мускуль работает с json-ебаниной? Если я каждый день буду создавать жсон ячейку и писать туда лог объемом в десятки мегабайт, для того чтобы потом брать их и обрабатывать, он не забуксует?
139 1804380
>>804376
Больной ублюдок, я бы за такое ногами пиздил.
140 1804392
>>804376
Юзай монгу. Её для таких вот случаев и придумали.
141 1804394
Насколько сильно репликация тормозит мускульного хозяина? Если слэйв на удалённом сервере через интернеты, это вообще законно? Только вкатываюсь в бдшечки...
142 1804400
>>804392
Я как раз склоняюсь в сторону монги, естественно она будет лучше для таких задач, но накатывать ее на сервер, разбираться, ебаться с ней и перепиливать код под нее - для меня тот еще гемор, потому и спрашиваю, может мускуль тоже неплохо справится с подобным.
Короче посмотрю как оно будет работать на мускуле, если накроется медным тазом, придется всё перепердоливать.
143 1804404
>>804400

>придется всё перепердоливать.


Всё равно придётся рано или поздно. Лучше сразу сделать нормально.
image.png857 Кб, 716x798
144 1804639
145 1804687
>>804145

>Соотвественно просто сначала обогащаешь таблицу нужными полями т.е просто джоинишь ВСЕ таблицы.


угу, понимаю

>Потом добавляешь вычисляемое поле которое выделает часть месяца из даты


Что подразумевается под "вычисляемым полем"? Оно в секции SELECT или WHERE?
146 1804714
>>804639
Я всегда зажимаю шифт, мне норм.
147 1804779
>>804639
Объясните космический смысл пикчи.
149 1804904
>>803864

Если должны обрабатываться данные только одного какого-то месяца, то просто сортируем сведённые данные по "посещаемости" и берем первую запись.

-- псевдокод:

SELECT TOP 1 "процент посещаемости", фамилия, имя ...
FROM T1 JOIN T2 ....
WHERE месяц N
ORDER BY "процент посещаемости"
150 1804930
>>804687
Ну ёбана, ты что совсем деревянный? Вычисляемое - ещё одно поле в таблице, которое получено из существующих полей(например стобец2 * стобец2 ). В WHERE только фильтры, новые данные в таблицу ты не добавишь.
151 1804932
>>804823
Как там в 2008?
152 1805631
>>804145
>>804904
>>804930
Спасибо, няши. Я почти-почти допинал.
Сейчас у меня выводятся ФИО, предмет и последний столбец - с минимальной явкой. Но мне теперь нужно, чтобы выводилась только одна строка с минимальным значением в последнем столбце. Прописываю последней строкой
having min(yavka);

select t.Last_Name, t.First_Name, s.Subj_Name,
min(100*l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
group by t.Last_Name, t.First_Name, s.Subj_Name
having min(yavka);

Пишет "invalid relational operator"

Но если последнюю строку переписать на сравнение например фамилии с каким-нибудь учителем, то все работает (остается одна строка, но не та, которая мне нужна)
having t.Last_Name = 'Ivanov';

>>804930

> ты что совсем деревянный? Вычисляемое - ещё одно поле..


я просто новенький и пока путаюсь в терминах... "вычисляемое" там или еще какое. уменьшаемое, вычитаемое, слагаемое - помню. Вычислемеое - нет))
153 1805776
>>805631
В хэвинг пиши min(100*l.Fullness/c.Qty_Students)
154 1805781
>>805776
Ну точнее тебе нужно сделать сортировку, потом вывести первую строчку, что-то типа:

select top 1
from govno
where min(100
l.Fullness/c.Qty_Students)

Но в оракле функции топ вроде нет, но есть аналаги гугли oracle top
155 1805783
>>805631
GROUP BY не требуется. Как я уже писАл, сортировка и топ 1:

select t.Last_Name, t.First_Name, s.Subj_Name,
--min убираем
(100l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
order by yavka -- сортировка
FETCH FIRST ROW ONLY;

Ну а если очень-очень хочется c GROUP BY , то можно так:

select t.Last_Name, t.First_Name, s.Subj_Name,
min(100
l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
group by t.Last_Name, t.First_Name, s.Subj_Name
having min(100*l.Fullness/c.Qty_Students) IN (
SELECT MIN(100l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
);
155 1805783
>>805631
GROUP BY не требуется. Как я уже писАл, сортировка и топ 1:

select t.Last_Name, t.First_Name, s.Subj_Name,
--min убираем
(100l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
order by yavka -- сортировка
FETCH FIRST ROW ONLY;

Ну а если очень-очень хочется c GROUP BY , то можно так:

select t.Last_Name, t.First_Name, s.Subj_Name,
min(100
l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
group by t.Last_Name, t.First_Name, s.Subj_Name
having min(100*l.Fullness/c.Qty_Students) IN (
SELECT MIN(100l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
);
156 1805909
>>805783
Ну тащемта да, если ему нужно для одного месяца. Но логично бы было предположить, что нужна таблица с топом для каждого месяца.
157 1806322
>>804394
Запись лога не тормозит практически.
Тормозит фиксация , тк тебе придется включить binlog , а sync_binlog Default Value = 1
Сама репликация :

>Replication is asynchronous by default


Тоже не должна тормозить на бытовом уровне понимания.

В реальности все очень зависимо от разных штук.
158 1806329
>>804376
не так страшно как об этом думают яваскрипт-макаки

>


Indexing a Generated Column to Provide a JSON Column Index

Почитай это
https://dev.mysql.com/doc/refman/8.0/en/create-table-secondary-indexes.html
159 1806987
>>805776
>>805781
>>805783
Пасиб! Понял. Всё вчера сделал.

>>805909
Мне пока что для собеса. Остальные запросики из тестового сделал, а этот не по зубам оказался.
160 1807093
Всем BEGIN, посоны.

Помогите понять, может ли Postgres в параллельное обновление нескольких колонок одной строки без локов?

Например, представьте схему:

```
create table foo (
id int
val1 int
val1_updated_at timestamp
val2 int
val2_updated_at timestamp
)
```

Есть два типа апдейтов:

```
update foo
set val1 = ??? and val1_updated_at = ???
where id = 1
```

и

```
update foo
set val2 = ??? and val2_updated_at = ???
where id = 1
```

При одновременном выполнении таких апдейтов, вызовет ли это проблемы с целостностью данных?
160 1807093
Всем BEGIN, посоны.

Помогите понять, может ли Postgres в параллельное обновление нескольких колонок одной строки без локов?

Например, представьте схему:

```
create table foo (
id int
val1 int
val1_updated_at timestamp
val2 int
val2_updated_at timestamp
)
```

Есть два типа апдейтов:

```
update foo
set val1 = ??? and val1_updated_at = ???
where id = 1
```

и

```
update foo
set val2 = ??? and val2_updated_at = ???
where id = 1
```

При одновременном выполнении таких апдейтов, вызовет ли это проблемы с целостностью данных?
161 1807095
>>807093
[code]
create table foo (
id int
val1 int
val1_updated_at timestamp
val2 int
val2_updated_at timestamp
)
[/code]
162 1807166
>>804404
Не слушай этого перфекциониста. Сделай, чтобы работало, пойми корнер кейсы, покрой тестами, а потом переделаешь нормально.
163 1807340
Сап тред

Есть довольно сложная база, в ней имеется таблиц 20. Раз в неделю мы делаем по ней некий отчёт и вьюху, которую требует отдел долбоёбов. Им время от времени не нравится, и они просят переделать/сделать другую вьюху с другими параметрами.

Каждый раз прогонять требуемые запросы - жопоебля, так как один такой запрос будет на нашем ебаном сервере часа два грузиться. Вопрос: существуют ли какие-то тулзы, которые по аналогии с Excel могут интуитивно делать необходимые этому отделу долбоёбов запросы? Или, если нет, как можно решить эту проблему? Была идея напилить свой скрипт на питоне, который будет в соответствии с выбранными столбцами посылать необходимый запрос SQL и возвращать на выходе CSVшник, но пока не очень представляю как это сделать.

Сам Excel не предлагайте, он будет нереально виснуть от объёма базы
Также не предлагайте Power BI, уже пробовали, он под такое изза своей сложности тоже не заточен


Заранее спасибо
164 1807379
>>807340
Powerquery, repoting service
data-scientist-analyzes-data.jpg53 Кб, 750x500
165 1807931
>>807340

>Вопрос: существуют ли какие-то тулзы, которые по аналогии с Excel могут интуитивно делать необходимые этому отделу долбоёбов запросы?


да.
power bi и tableau.

>Power BI, уже пробовали, он под такое изза своей сложности


в таком случае может вам всей фирмой нахуй пойти?
Вы просто ленивые долбоебы. Это лучше из возможных решений.
166 1807934
>>807340

>Каждый раз прогонять требуемые запросы - жопоебля, так как один такой запрос будет на нашем ебаном сервере часа два грузиться


и че так долго то?
Возможно, вам нужна колоночная аналитическая бд.
типа clickhouse или vertica. И автоматический процесс доставки данных в нее.
167 1808084
>>807934
В CH сложно вкатываеться?
168 1808100
Памахите, плиз
В правильности первого я практически не сомневаюсь, второе вызывает вопросы, а третье мне непонятно
169 1808118
>>808100
2 выглядит правильно.

3 это просто SELECT и WHERE. Алсо, гугли как использовать LIKE.
170 1808120
>>808118
И, скорее всего, в 2 вывести название департамента, а не только з/п.
171 1808121
>>808120
*в 2 надо
172 1808129
>>808118
Блин, насчёт третьего - и правда.
Про LIKE я вполглаза читал и потому плохо знаком.
173 1808327
>>807093
Бампану вопрос. Очень лень писать тест интеграционный с многопоточностью, поднимать докер, писать бойлерплейт и проч.
174 1808687
где я могу потестить сложные sql запросы? hackerrank? типо порешать задачки для тренировки
175 1808742
>>808687
Чот я особо не вникал, но на первый взгляд задачи эллементарные, за на 10 баллов селект из одной таблицы, на 50 групировка с каунтом
176 1809273
>>781628 (OP)
ОП, добавь в шапку: https://dbdb.io/

Да и вообще можно весь Карнеги Меллон добавить:

https://db.cs.cmu.edu/
https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/playlists
177 1809275
>>809273
Отвык от уебанское двачевской разметки.

- https://db.cs.cmu.edu/
- https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/playlists
178 1809277
>>809275

>уебанское


>уебанской

179 1809279
>>808687
ХакерРанк, ЛитКод (нужна премиум подписка), куча всего. В гугле забанили?

Вроде довольно большая бесплатная коллекция задач: https://www.hackerrank.com/domains/sql
180 1809297
>>809273
>>809275
Напомни ближе к 500, коллективный ОП добавит.
181 1809348
Сап двач. Какой клиент для постгре умеет в аутентификацию по sspi?
182 1809374
>>809279
раньше же вроде на литкоде бишплатная подписка была?
183 1809652
>>809374
На литкоде нет "бесплатной подписки". Так-то да, он бесплатен, но когда я смотрел последний раз (около месяца назад), почти все вопросы на SQL были под замком.

https://leetcode.com/problemset/database/
изображение.png639 Кб, 640x541
184 1809695
Котаны как в apache nifi вкатываться? Что почитать?
185 1809702
.
186 1810225
Есть ли какой-нибудь ресурс где можно посмотреть аналогичные команды для разных СУБД (создание таблиц с разными типами, ограничениями, индексами, вывод информации о таблицах и всё такое), чтоб можно было сравнить и сразу понять в чём различия, а то у одних auto increment, у других auto_increment, у третьих identity(1, 1), и тому подобное.
188 1810364
>>810245
https://www.w3schools.com/sql/
А вот тут ещё лучше
223.JPG118 Кб, 831x711
189 1810384
>>808100
Всё ещё мучаю
190 1810604
>>810384
Ебать ты далбаёб братишка. В 3 не OR,а AND, вместо LIKE используй LEFT
a9d92a52dee916d102fbb15b4282c568.jpg37 Кб, 564x534
191 1810654
>>810604
Я не очень умный, но я пытаюсь :c
В идеале вообще в песочнице было б таблицу создать и там тыкать, да.
192 1810713
Давно не работал с настоящей БД все джейсоны в носкл дрочим
Прособесудейте меня по MS SQL немного плиз.
194 1811137
>>808100
Что за рофл в первом: "GROUP BY IT_PROG"?
195 1811138
>>811137
SELECT AVG(salary) FROM Employees
WHERE job_id = "IT_PROG"
Вот так же надо, вроде
196 1811336
Подскажите, джойны, если случайно заиграться с переменными binlog_commit_wait_count и binlog_commit_wait_usec, и получится так, что обновления будут сыпаться быстрее, чем диск будет успевать записывать данные, база сама эту ситуацию разрулит или всё развалится?
15984416648190.jpg115 Кб, 604x670
197 1811378
Анончики, мне дали техническое задание, в котором надо получить выгрузки по ИНН с сайта ФНС. Я пока делаю через selenium на питоне, но, вероятно, можно как-то подключиться к БД ФНС через MySQL какой-нибудь? Для этого надо писать админу сайта и запрашивать логин и пароль к БД? Смогу я потом через SQL-запросы считать excel-файл со списком ИНН и скачать выгрузки из БД, или лучше продолжить делать через питон?
198 1811392
>>811378
попробуйте потоньше пожалуйста
199 1811396
>>811392
Я не троллю, анон, никогда таким не занимался. Это слишком легко или невозможно?
200 1811399
>>811396
Кому ты будешь писать додик? Золотову? Кто тебе даст доступ к бд ФНС с гостайной и личными данными?
201 1811406
>>811399
На сайте же можно скачивать выписки, вот я и думал, что можно автоматизировать это через SQL.
Ладно, спасибо за ответ, продолжу делать через webdriver.
202 1811442
>>811392
>>811399
У судрф на сайте sql-инекция и как следствие база жопой наружу торчит, насчёт фнс не исключено что тоже найти можно.
203 1811457
>>810604
Какой, нахуй, лефт, долбоёб?

`AND phone_number LIKE ''+7905%"`

Обрати внимание на `%`.

И да, там везде должен быть AND.
204 1811462
>>811457
В условиях задачи явно сказано - номер начинающейся на +7905, если паттерн был в середине, или там плюса не было, другой разговор. А с учётом того что вариант с лефтом более предпочтителен like, и в условиях задачи нам не двусмысленно намекают что его можно использовать. Он блять WHERE написать не может, а если у него спросят В ЧЁМ ПРЕИМУЩЕСТВО LIKE или ЧТО ОЗНАЧАЕТ ПРОЦЕНТ, он просто будет стоят и жидко обтекать.

А потом такие хуесосы как ты на продакшене везде свой ссаный полнотекстовый поиск пихают и удивляются, почему всё так хуёва работает.
205 1811468
>>811462
Может я тупой, но куда ты там ЛЕФТ впихнёшь? Причём там ЛЕФТ вообще?
206 1811470
>>811462
Ты вот так хочешь, что ли?

`LEFT(phone_number, 5) = '+7905'`

Но это же уебанство, уёбок.
207 1811472
>>811462
Ты хоть понимаешь, что поиск по паттерну соптизируется и будет работать лучше, чем вот это >>811470 дерьмо?
208 1811474
>>811472
https://stackoverflow.com/a/24603325
https://stackoverflow.com/a/17701264

Вывод: лайк работает лучше, если есть индекс.
209 1811514
>>811474
Чот в голос. Скажи ты совсем идиот? Пробовал читать что линкуешь?
210 1811601
>>811514
Идиот здесь ты. В чём, по-твоему, противоречие?
211 1811621
Двощ, делаю тестовые, наткнулся на странную формулировку
Есть две простенькие таблицы: id,id2 и id2,name
Надо вывести id,name двумя способами
И тут я сел в лужу ибо не понимаю что это за способы? То есть про join я в курсе, конечно же. А ещё как их объединить можно, через что?
212 1811652
>>811621
Всратых способов можно много придумать.
1. select id, name from t1, t2 where t1.id2 = t2.id2 -- тоже джоин, но неявный
2. select id, (select name from t2 where t2.id2 = t1.t2) from t1
3. Написать какую-нибудь процедуру, где вложенным циклом проходишься по обеим таблицам и вручную джоинишь.
213 1812263
>>811621
Жоин и подзапрос же
214 1812341
Как правильно организовать базу с тремя таблицами со связями многие ко многим?
База для дискорд бота. В дискорде есть сервера (таблица guild), пользователи (user), роли пользователей на сервере (role). Пик № 1

У сервера может быть много пользователей и ролей. Пользователь может состоять на многих серверах и иметь много ролей. Не могу придумать схему базы. Пока остановился на двух вариантах
Первый кажется проще: пик № 2, тут все связи хранятся в одной таблице. Насколько это правильно?
Второй кажется логичнее: пик № 3, но чтобы сформировать простой запрос, понадобится вереница из джоинов.
Как будет правильнее?
215 1812370
>>812341
Средний пик - это результат джойна guild_user, guild_role и user_role с третьего.

Второй вариант быстрее (результат джойна уже в готовой таблице) третий займет меньше байтиков под хранение. Но если юзеров у тебя не на терабайт, никакой реальной разницы нет.
216 1812398
Есть одно индусское поделие, регулярно вызывающее в базе предприятие дедлоки.
Когда оно хочет присвоить новый порядковый номер счёту или другой писульке, оно, вместо того чтобы пользоваться родным механизмом секвенсов делает так:

select number from отдельная_индусотабличка_с_последними_присвоенными_номерами FOR UPDATE

Потом соответственно update number=number+1

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

Просто убрать for update - возможное дублирование сгенеренного номера.
217 1812399
PS номер содержит буквы и цифры, так что просто инкремент не вариант.
218 1812426
>>812370
Спасибо
219 1812935
Хай гайс , расскажите пожалуйста, что в вакансии значит оптимизация запросов? Что хотят от меня, что читать? Есть статьи годные или поделитесь личным опытом.
220 1812960
Сап двач.
Зочем вообще нужен ваш SQL, кроме как ради разогрева климата?
Мне кажется, что вы все дармоеды, пока нормальные поцаны архитектурят хайперформанс базы на сырых key-value движках сидите тут и дрочите.
221 1812967
>>812960
Как думаешь, что сильнее разогреет атмосферу: SQL-запросы или производство огромного количества более ёмких дисков, чтобы вместить всю эту ненормализованную поеботу?
222 1813004
>>812935
Это значит есть говнозапрос, который работает неприемлимое количество времени, или вообще не отрабатывает, так как требует недопустимое количество ресурсов - ты берешь и переписываешь его так, что он начинает отрабатывать за приемлимое количество времени, или отрабатывать вообще.

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

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

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

Помимо этого может быть оптимизация на уровне ЕТЛ процесса или приложения, котрое взаимодествует с бд, путем уменьшения объема обрабатываемых данных/количества операций над ними при получении аналогичного результата, но это уже немного другая тема.
222 1813004
>>812935
Это значит есть говнозапрос, который работает неприемлимое количество времени, или вообще не отрабатывает, так как требует недопустимое количество ресурсов - ты берешь и переписываешь его так, что он начинает отрабатывать за приемлимое количество времени, или отрабатывать вообще.

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

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

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

Помимо этого может быть оптимизация на уровне ЕТЛ процесса или приложения, котрое взаимодествует с бд, путем уменьшения объема обрабатываемых данных/количества операций над ними при получении аналогичного результата, но это уже немного другая тема.
223 1813009
>>812960
Для каждой задачи есть свой инструмент.
Время отклика не единственная и не основная задача для многих субд. Думаю далеко не все key-value могут похвастаться поддержкой acid, и серьезно проработанной fault-tolerance.
Плюс порог вхождения, sql проще выучить, значит проще найти специалистов - для владельца продукта это тоже важно. Плюс при значительном объеме оперативки когда вся база может быть закэширована, и скорость не является первостепенным фактором, то зачем эксперементировать на чьих-то костылях, когда есть проверенное годами решение.
224 1813307
>>813004
Спасибо анон, я так понял что половина из начального это работа админа БД, но разрабу это тоже надо, а есть какие-то мастхэвыные статьи/книги?
Когда собеседования прохожу отвечаю:
По индексам я отвечаю что могут по одному полю или по нескольким, ускоряют выборку но замедляют инсерт/апдэйт/дэлит и работать с ними надо исходя из этого.
По джойнам(видимо имеется ввиду inner, left, right и т.д.) тоже, недавно спросили про физический и логический джойн, я впервые про это слышал. И лёгкий гуглеж толком не пояснил мне ответ че к чему.
Типы объединений если это UNION/UNION ALL, хз что про это рассказать, стакает таблицы друг к другу по полям.
Агрегации count/sum/avg тут офк он группирует по заданным полям и вычисляет заданные агрегации.
Может что-то еще дополнительно надо рассказывать?
225 1813383
>>813307
да нет никаких "админов БД", кроме как в очень крупных и совковых конторах.
Всегда его функцию будет выполнять разработчик.
Как тебе "Админ БД" примет решение какие данные удалять и как изменять алгоритм? Без привязки к продукту это все не работает.

Концепт простой (повторить для каждой субд):
1. Изучи где здесь команда чтобы посмотреть план. Найди там числа просмотренных строк - N (K,L,M,...)
2. Сделай так чтобы NKL*M был поменьше
3. Если нихуя не получилось и в запросе есть Group by - ставишь кликхаус.
4. Если нихуя не получилось в оперативных запросах - ставишь redis или еще какой-нибудь кеш.

Это все.
226 1813557
>>813307
Ну это смотря как распределены задачи и ответсвенность в команде, бывает что этим занимаются разработчики, бывает что админы. Например разработчики пишут - абы не было синтаксических ошибок, а админы отлавливают самые жуткие вещи и говорят что нужно переписать. Бывает что этим целиком занимаются разработчики, а админы просто рубят сессии неудовлетворяющие определенным требованиям. В общем поразному бывает.

По индексам к примеру - как влияет селективность запроса, на эффективность использования индекса. Нет смысла вычитывать пол таблицы через индекс, простой скан в большинстве случаев пройдет быстрее. Для каких значений индексной селективности какой тип индекса лучше выбирать, стандартное деление btree/bitmap. Выборку они могут ускорять не всегда. По джоинам например - что есть такие гадкие вещи, как cross-join. Основные типы выполнения джоинов внутри бд: hash-join, merge-join, nestedloop. Но это уже ближе ко второму пункту из поста. По объединениям, что union, к примеру скорее всего будет использовать сортировку, чтобы убрать дубликаты, соответсвенно union all отработает быстрее, так как просто прочитает и склеит две таблицы - но результат может отличаться от union.

По литратуре - у oracle довольно хорошо все эти темы расписаны в официальной документации, но это лонгрид и оракловая специфика, хотя +/- везде все похоже, потом только нужно будет подтянуть специфику другой базы.
https://docs.oracle.com/database/121/TGSQL/toc.htm

. У postgres тоже есть хорошие статьи по оптимизатору и стоимости операций, на там как-то разбросана немного информация по разделам.
https://www.postgresql.org/docs/10/performance-tips.html
https://www.postgresql.org/docs/10/using-explain.html

По книгам не подскажу, не встречал и не искал. Статьи на хабрах иногда неплохие пишут
227 1813559
>>813383
>>813557
Благодарю.
228 1813561
>>812967
Адекватно спроектированная KV база (не вчерашним MySQL-PHP-васяном) будет на максимум на 15-20% больше аналогичной SQL базы, только вот кроме процессора (самого энергоёмкого и тепловыделяющего элемента в серверах без гпу), который требует охлаждения (в отличие от HDD/SSD), эта SQL база ещё будет жрать заметно больше оперативки, и так по кругу.

>>813009

>Думаю далеко не все key-value могут похвастаться поддержкой acid


Ну, уже есть LMDB/FoundationDB/и ещё кто нибудь.

>и серьезно проработанной fault-tolerance


Смотря что именно под этим понимать, но опять же — вопрос времени.

>Плюс при значительном объеме оперативки когда вся база может быть закэширована


При таком объёме можешь расслабить булки — ты вклад в глобальное потепление не делаешь, лул.
229 1813578
>>813561

> Адекватно спроектированная KV база


Адекватно спроектировать можно и реляционную базу, применяя по необходимости денормализацию и key-value, построенные поверх реляционной БД. В реальных приложениях никто не дрочит на 6 нормальных форм, там ищут компромисс. А пока ты прикрутишь к своей KV-базе всевозможные обёртки, ACID, констреинты, триггеры. вьюхи, выделять тепла это станет ровно столько же, разница будет лишь в том, что то, что раньше делала СУБД, теперь будет делать приложение, и в сумме ничего не изменится.
230 1813701
1
Screenshot223.jpg130 Кб, 709x812
231 1813828
>>813557

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



Какие же вы пидоры.

Золотые бессмертные строки как нельзя лучше подходят к данному моменту:
232 1813830
>>813828
ух ты
что это за книга?
233 1813831
>>813830
Гугл говорит, что эта: http://www.williamspublishing.com/Books/978-5-907144-74-3.html

мимо
234 1813903
>>813831
ой спасибо
читать её конечно, не буду
235 1815912
Можно на пальцах что такое "протухание" кэша.
236 1815963
>>815912
Когда значение, хранимое в кеше, становится неактуальным, то есть значение в базе более новое. И нужно обновлять кеш.
237 1816953
Суп, БДач. Можно ли взять для шаражных лаб по БД базы данных для серверов minecraft? Нужно чтобы было 10+ таблиц в базе для хорошей оценки. Будет ли там достаточно таблиц? Если нет, то какую предметную область можно выбрать вместо этой?
238 1816960
>>816953
Самое популярное для лаб - модель магазина (ну или интернет-магазина). Таблиц можно придумать сколько хочешь. А за игоры некоторые преподы могут и нахуй послать.
239 1816975
>>816960
Ого, спасибо за такой быстрый ответ. У меня просто воображение плохое, и каждое такое задание "придумайте себе задание" меня вводит в ступор. Модель магазина звучит универсально, ведь можно любой магазин сделать + разобраться в довольно таки прикладной теме.
Чаю тебе.
240 1816984
>>816975
Обычно, когда мне не хватало в вузе фантазии, я гуглил что-то в духе "лабораторные по базам данных варианты заданий". Но не всегда работало, один из наших преподов вообще сказал нам делать что угодно, но не магазин, ибо надоело.
241 1817144
>>816953
Бери adventure works от мс
242 1817630
Анончик, помоги. Вот например у меня есть сущность player и vehicle. И у player и vehicle может быть сущность inventory. Нужно обеспечить целостность данных, чтобы при удалении player или vehicle удалялся и inventory. Как это правильно сделать? если бы inventory был только у player то добавляю у inventory поле playerId и на него вешаю ФК, on delete cascade, и всё. А тут как? Делать несколько полей у inventory мол userId vehId выглядит хуевым решением
243 1817846
>>817630

В твоем варианте только через тригеры на удаление. На чистом SQL ты этого не сделаешь.
Но судя по описанию ты там игру клепаешь. Может тебе стоит немного переработать архитектуру. Почитай про паттерн Entity component system https://en.wikipedia.org/wiki/Entity_component_system и вот еще http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
244 1817887
>>817846
Спасибо, любопытная инфа.
245 1818184
Наверно платиновый вопрос, но как можно удалить в постгресе БД вместе со всеми связанными джобами? Для mssql решение нашел, а для постгреса в гугле ничего нет. Помогите начинающему недо-DBA
246 1818480
В dynamo все индексы неимзенямы после добавления (не в смысле сами индексы в таблице, а связанные значения в документах)? И primary, и gsi/lsi?
247 1818514
>>817630
А они точно должны в одной таблице храниться, эти твои inventory? Inventory транспорта и игрока не могут иметь разную структуру? Или их структура не может изменяться независимо?
image.png47 Кб, 2560x418
248 1818691
Петухи Уважаемые специалисты по голубым слонам тут?
На пике - причина креша целого постгреса. Контекст - aws_s3.table_import_from_s3.
Правильно ли я понимаю, что если внутри расширения что-то валится с exit code > 0, то вся база падает нахуй?

Предполагаемый исходник расширения:
https://github.com/chimpler/postgres-aws-s3/blob/master/aws_s3--0.0.1.sql
Но это не точно.
249 1818696
>>818691

>внутри расширения что-то валится с exit code


Поправка, внутри python-функции.
251 1818744
Я зачем-то решил пересесть на постгрес, но тут же столкнулся с бедой.
На мускуле я выключал ONLY_FULL_GROUP_BY (по дурости, маленький был).
А сейчас в постгресе не могу совершить запрос.

Есть поле balance, мне нужно вывести его как на 2ом скриншоте, (чтобы было 330 - 2), сам запрос выглядит как на 3м скриншоте, но ругается, что нужно в груп бай и баланс добавить, но так запрос некорректный, помогите правильно составить блин
252 1818851
>>818744
Блять ты какую-то лютую дичь творишь. Хоть бы обьяснил что хочешь получить
253 1818989
>>818851
Мне нужны категории, чтобы все что в диапазоне 3300-3399 было в категории 3300, второй столбец это количество входящих туда записей.
Ну и так со всеми категориями, получается
254 1819303
>>818989
Делай через with. Первой итерацией считаешь сумму, можно сразу через case по группам распределить, потом делаешь group by по группам. Подзапросом тоже можно.
255 1819473
>>819303
какой кейс еще, я не буду знать всех значений, но мне нужно чтобы каждое значение попадало в свою категорию, выше я скинул скрин рабочий на мускуле, но там был выключен ONLY_FULL_GROUP_BY в постгресе нужно группировать все значения, но так запрос выдает неправильные данные, значит он изначально был написан неверно(?), вот я и пришел за помощью.

Еще раз скажу
Входные данные
3366
3323
7621
7677
7692

То что я хочу получить запросом
330 - 2
760 - 3
256 1819496
>>819473
Ебтить ты обьясняльщицследующий раз сразу иди нахуй с таким ТЗ

SELECT balance, count(*)

from(
SELECT test,
balance/100 as balance
FROM GOVNO) as q

group by balance
257 1819601
>>819496
дякую, анон, извини за тз
258 1821038
посоны, а есть тут разработчики БД \ дба из регионов? какая зп считается норм не в маскве?
259 1821516
>>821038
Минимальная за какую готовы работать.
260 1821563
>>821516
Нихуя это так не работает, у херочек в методичках написано, что если занижаешь ожидаемую зарплату, то не умеешь оценивать себя, а значит, доверия к тебе быть не может, и мы вам перезвоним.
261 1821836
>>821563
Давай разбираться, в большинстве вакансий (на вскидку 75%-85%) работодатель не указывает ни вилки, ни потолока. Но в компании такого не может быть, потому что выделяется ставка, экономисты сидят считают затраты на стаф. Отсюда два вывода: вакансия фейковая, либо они ищут кого дешевле(может быть смотрят на цена качество). В рашке, например, нельзя определить стоимость труда по рынку, потому что никто зарплат не пишет, а по тому, как договариваются надо проводить опросы кто честно скажет.
Понятное дело МРОТ никто не попросит. Но попросят к примеру 5 челиков 50к, 60к, 75к, 80к, 85к соответственно, так у трёх последних шансов просто мизер будет, потому что на первых двух будут витязи ипотеки со спиногрызами.
deecVKzMfzo.jpg316 Кб, 869x1187
262 1822472
Господа анонимы, хочу вкатиться в pl/sql. Что посоветуете почитать?
263 1824883
>>781628 (OP)
Может кто-нибудь посоветовать учебник по MySQL? Мне нужно хорошо освежить познания в нём, чтобы на собеседованиях пояснять с ноги все типичные вопросы. У меня есть парочка, но они датированы 2000 и 2003 годами.
264 1825039
>>824883
Возьми свежий учебник Ивана Смузина «react sql на микросервисах»
Хорошая подача материала в мемчиках, примеры из жизни зумеров, в поларок купон деливериклаб.
265 1825072
>>825039
php тоже изучать по учебнику 2003 года? Что там было, php 4, верно? Берёшь учебник, учишь от корки до корки, а потом на собеседовании у тебя про какие-то лямбды спрашивают, замыкания, магические методы, статическое связывание и всякое ооп. А ты такой гордо "В php этого всего НЕТ! Я точно знаю, так в учебнике написано."
266 1825849
Привет господа я сейчас пердолюсь с nodejs и вот что я вдруг не очень понимаю.
Что такое коннект к базе данных, и сколько он живет.

В чем суть, при старте приложения но ноде, я в одном из модулей создаю объект - или коннект, или пул коннектов с лимитом около 10.

Коннект с базой - это некое постоянное соединение? Или это просто объект с настройками, который при каждом вызове стучится в базу данных, делает то что должен и закрывается?

Далее в вызывающем коде я из этого объекта ( или из пула получаю 1 из 10 ) получаю соединение, выполняю запрос, получаю ответ, в в конце вызываю языковую конструкцию которая "закрывает" что ли соединени.
А если его вручную не закрывать - что получится?
А сколько в одну единицу времени может быть соединений?
267 1826296
Есть три колонки: фио, группа, возраст.
Как найти группу, если в ней есть более 10 человек с возрастом = 19, например?
image.png15 Кб, 612x378
268 1826304
>>781628 (OP)
Есть база данных с сотрудниками. В ней хранится таблица department - представляет отделы, в таблице employee соответственно хранятся записи о сотрудниках, один сотрудник может быть записать сразу в несколько отделов (или не записан ни в один). Суть в чем: для каждого отдела надо создать "таблицу" вроде той что на пикриле, то есть каждому из сотрудников из этого отдела надо поставит ьв соответствие Проект и некий числовой идентификатор (как хорошо он выполннял работу), как блин такое в реляционках мутить? Знаю чт ов Postgresql есть поле json, пока смотрится логичнее всего: захуярить внутрь таблицы department поле json где ключи будут идентификаторами сотрудников, которые в своб очередь буду ссылать на другой json... В реляционной модели такое можно сделать?
269 1826335
270 1826389
>>822472
Эх, чот тебе никто не отвечает. Вроде фейерштейн прибыл - нестареющая классика.
271 1826409
>>826389
Надо добавить в шапку, пусть хоть какая-то шапка будет.
272 1826477
>>826304
Всего одна новая таблица в которой: employee_id, project_id, score
То есть каждая строка состоит из трех этих колонок (ну еще ключ ForeignKey с constraint чтобы было отношение 1-1 к department)
изображение.png61 Кб, 2711x161
273 1827170
Что это? Нихуя не пойму как их собирать
274 1827401
Пацаны, что значит ".body" при выборе данных в селекте? Ну например

> SELECT huntaname.body


Синтакис подсвечивает это слово, но чот я нихуя не смог нагуглить на эту тему
275 1827500
>>827401
Проиграл с тебя.
276 1827507
>>827401
Скинь DDL таблицы
277 1827513
>>827500
А чо такова?
>>827507
Да это со скрина, у меня на руках нихуя нет
278 1827517
>>827513
У тебя доступ к базе есть?
Сделай select * from эта таблица.
279 1827523
>>827513

>А чо такова?


То что ты нубло ебаное, почитай про алиасы.
280 1827525
>>827517
Нету, говорю же, это чисто со скрина тема
>>827523

> То что ты нубло ебано


Я этого и не скрываю

> почитай про алиасы.


Это не они, там нет AS
281 1827534
>>827525
Мань, 5 минут в гугле

1)select t.name from table t без as лол

2)select table.name from table без as лол

В селекте или алиас стоит или у тебя таблица huntaname называется, а body там - атрибут.
282 1827536
>>827525
Ну тогда скрин скидывай. А body может быть чем угодно, вдруг у тебя "синтаксис" подсвечивает вообще все атрибуты.
283 1827698
Сап, двач. Планируем строить аналитический сервис. В сутки у нас ожидается около 5 миллионов событий, это около 10-15 миллионов строк в базе, без ограничений по времени хранения. Real-time не нужен, можем писать данные, и раз в сутки агрегировать. Справится ли с таким MySQL, или стоит смотреть в сторону какого-нибудь ClickHouse?
284 1827757
Как догадаться какой сервер нужен (Процессор память, ядра, поддерживаемые инструкции и т.п.) для той или иной базы данных? Есть какая-то конкретная методология расчёта?
285 1827779
>>827698
Mysql справится. Не справишься ты.
Поэтому лучше сразу кликхаус.
286 1827781
>>827757
Никак. В этом суть популярности облаков. Заранее ничего не известно в программной индустрии. Все слишком сложно увязано.

Только 1сники рискуют с потолка цифры выдавать. Или когда ты планируешь очередную копию давно известного тебе софта.
287 1827797
>>827757
https://www.postgresql.org/docs/13/admin.html
И гуглишь по словам capacity planning.
288 1827816
Аноны, где почитать как работает сам SQL изнутри, как он формирует данные, как, к примеру, работает SELECT вместе с WHERE, как происходит поиск по критериям и можно ли облегчать эту задачу SQL какими-либо способами? В общем не синтаксис, а фундаментальные знания.
И в чем польза индексирования нескольких полей в таблице?
289 1827826
>>827816
В книжках по базам данных, от субд зависит.
290 1827974
>>827797

>capacity planning


Добра тебе!

>>827781
На любой подобный вопрос давно защищено тысяча дипломников и дисеров.
291 1829795
>>827816
SQL это всего лишь язык. Базка в общем случае делает всё как ты сказал: берёт таблицу, всю перелопачивает, по WHERE всё отсеивает и отдаёт. Если джойны, то создаёт временную таблицу на джойнах и всё то же самое. То есть результат всегда должен совпадать с наивной реализацией.

А вот как это всё оптимизируется это уже более интересный вопрос. Почти везде для оптимизации нужны индексы. Индекс это по сути сортировочка всех строк в определённом порядке по определённым полям. Если условия в WHERE совпадают с тем как создан один из индексов, то бд сможет оптимизировать запрос с помощью этого индекса: она по сути не заглядывает в строки, а ищет только в индексе. Индекс никогда не нужно перебирать от начала до конца чтобы что-то в нём найти.

> польза индексирования нескольких полей


Там логически сортировка другая получается. Потому что каждое из полей ты можешь ASC или DESC, и комбинации полей будут идти друг за другом в разном порядке.
292 1829806
>>827974
какой нахуй capacity planning?
у тебя каждый раз неизвестная система!

если любишь ебанутые англоязычные псевдоуспешные аббревиатуры вот изучи: https://en.wikipedia.org/wiki/No_free_lunch_theorem
293 1829824
всем здарова, у меня такой вот вопрос, задался вопросом как бд подключить к сайту, полез на ютуб, а там какие то старые дядьки своим ПХП мне в рот лезут, можно ли как то без ПХП подключить бд к сайту?
294 1829825
>>829824
если кому интересно нашел видос от чела из майкрософта
https://www.youtube.com/watch?v=VCQ-VMG8Bao
295 1829833
>>829824
Странный вопрос. БД принципиально подключается к бэкенду можно и к фронтенду, но не важно. Если у тебя бэкенд на ПХП, то никак без ПХП ты этого не сделаешь, будь то вручную или косвенно через цмски и движки.
296 1829843
>>829824
Пиздец ты мудачина.

Попробуй для начала Google Forms и Google Sheets использовать в качестве "базы данных".
Через год приходи в тред.
297 1829946
>>829806
Ты не разбираешься в теме. Не пиши здесь больше и не вводи людей в заблуждение. Информация по capacity planning, а так же документация к СУБД дают исчерпывающую информацию по выбору оборудования и тюнинга самой СУБД под конкретные нагрузки.
298 1830042
>>829843
хочу на sql
299 1830061
Решил почти все задачи на sql academy (все лёгкое), но ушлые разрабы не дают сертификатик без премиум аккаунта.
Прорешал задач сорок на sql-ex, буду дальше их добивать, они там реально сложнее

Задачки это хорошо, но есть ощущение что я просто дрочу на месте без прогресса. Куда смотреть дальше, чтобы получать знания приближенные к реальности? Написать приложение на комп с работой баз данных?
Может почитать что-то про правильные построения самих бд?
300 1830123
>>830061
Скачиваешь книгу Куликова “Работа MYSQL, MS SQL SERVER и ORACLE в примерах”. Тут определяешься с базой данных. Если это SQL Server, то скачиваешь на торренте данную СУБД. Если Oracle, то скачиваешь образ для WMvare с их сайта, или используешь их online СУБД.
Далее. Находишь в зависимости от СУБД серьезные книжки.
301 1830141
>>829946
можно подумать ты разбираешься.
тебе просто удалось угадать поведение субд для 3.5 приложений с которым тебе довелось работать.
302 1830143
>>830061
Найди работу в интеграторе. В реальности на СУБД такие вещи пилят (особенно если это oracle или sql server), что ты охуеешь такое с нуля писать.
303 1830149
>>830143
Что значит "работа в интеграторе"?
Что ещё надо знать для устройства на работу по базам данных? Кроме синтаксиса у самих бд
304 1830160
>>830149
Значит работа в аутсорс конторе, котора продаст твою жопу банку, где ты увидишь код написанный поколениями с самописными etl-системами, очередями и пакетами хранимок на 10k строк.

> Кроме синтаксиса у самих бд


Лiл. Ничего. https://docs.oracle.com/database/121/ARPLS/toc.htm - но со временем будешь узнавать больше из этого списка.
305 1830165
>>830160

>>Ничего


Типо я вот порешал задачи на сайтах, и такой красивый могу претендовать на джуна? Звучит слишком просто, или мне по началу за такую должность только на воду без хлеба хватит денег?
Я проходил собес по бд, но жидко обосрался от нервов и там пришлось бы изучать type script
306 1830343
>>830165
Реально тебе дело говорят - иди работай. Без опыта работы на реальном проекте - чем бы ты ни занимался в свободное время - тебе по началу будут предлагать на "хлеб и воду", очень маленький шанс, что кто-то тебе даст ставку мидла, потому-что ты дома что-то делал.
Задачи решаешь - иди работай, перед собесом на конкретную вакансию подтяни просто знания по особенностям работы конкретной базы которая указана в вакансии, типы там всякие, функции работы со строками, числами датами, оптимизацию немного погугли в все. Дальше можно дома заниматься изысканиями и исследованиями если работа - фуфел оказалась, и уже на следующем собесе рассказывать, что ты такими крутыми штуками на работе занимался)
307 1830531
>>830343
Проблема только в том, что я не безработный студент на шее у мамки, и пиздец как не хочется сидеть въебывать джуном за 15к, когда я сейчас деградирую за 30.
Хотя с другой стороны я понимаю что за просто так мне только хуй за щеку присунут.
308 1830678
>>830531
Мне сначала 50к предложили. Через 2 месяца я ушёл на 70к, потом 90к, сейчас вот оффер на 140к.
2 года опыта работы, а sql-ex я так и не добил, но когда-нибудь сертификат там я получу.
309 1830904
>>830343

>Реально тебе дело говорят - иди работай


Проблема таких советов - не факт что работа даст скилл и опыт.

Потому что без скилла и опыта возьмут максимум на галеру или там в госконтору. Ни там, ни там ничего правильного делать не получится.
А в конторы, где можно получить полезный (ключевое) опыт не берут без этого опыта.

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

Как бы у меня уже есть опыт разработки приложения от пустого окошка, до конечного разворачивания на говнокомпах (у нас до сих пор есть несколько с Windows XP из-за привязанных к ним железках). Более ста одновременных подключений пользователей. Базы данных по 40гб (ведь их-то нельзя было резать, вся история должна быть доступна)

И...

Я даже до собеседований на джуна (но с зарплатой выше чем мне платят сейчас, ясен пень речь не про конторки с 20к деревяных оплатой) нигде еще дойти не могу - мы вам перезвоним.

Я хз как быть
310 1831072
>>830904
Ну я сужу по своему опыту - и могу сказать, что когда у меня был начальный уровень - практически любые задачи давали мне полезный опыт - если я не делал их на отъебись и побыстрее. И конечно это должны были быть реальные задачи - а не "заполни формочку нарисуй квадратик".Просто сидел и разбирался, почему не работает, как сделать лучше, как правильно, как другие люди делают и почему так, а не иначе.

И ты найдешь такие задачи с большой долей вероятности, как во всяких яндексах, так и в энтерпрайзах. В энтерпрайзах если повезет иногда можно заниматься параллельно своими делами и исследованиями. А в яндексах если не повезет - сидеть и несколько лет херячить запросы к api.
Просто в яндексах создаются более комфортные условия, и обучению и развитию сотрудника уделяется больше внимания до определенного этапа.

И если ты занимаешься кодингом, я не переходил бы на твоем месте чисто в sql. Если интересны базы и работа с данными - посмотри в сторону highload.

Судя по описанию того что ты делаешь - ты работаешь на каком-то производстве/предприятии не в милионнике, я угадал? Если да - попробуй поискать удаленку в ДС-ах, может получится проще и быстрее
311 1832300
Делаю задачку из пхп треда, нужно сделать сайт с тестами (аля тест на зека или кто ты из наруто).
Я выбрал такую схему: таблица с тестами, таблица с вопросами и таблица с вариантами ответов. У каждого варианта ответа есть id вопроса в котором он используется и у каждого вопроса есть id теста в котором он используется.
Вроде выглядит адекватно, но я не представляю как мне теперь по id теста вытащить за один запрос все вопросы к этому тесту и все варианты ответов к этим вопросам. Я так понимаю нужно юзать join или как?
БД - PostgreSQL, если это важно
image.png58 Кб, 417x439
312 1832327
>>832300
https://ru.wordpress.org/plugins/quiz-maker/
Пхп - это язык, где программирование доведено до примитивизма. Если возникла какая-то проблема, нужно первым делам искать нужно даже не ответ на StackOverflow, а плагин для WordPress.
Но да ладно. К примеру, есть tests (id, title) и questions (id, text, test_id). Можно написать select * from tests, questions where tests.id = questions.test_id and test.id = (id теста), здесь выполнится неявный join, и у тебя будет результат:
tests.id | title | questions.id | text | test_id
1 | тест1 | 1 | вопрос1 | 1
1 | тест1 | 2 | вопрос2 | 1
1 | тест1 | 3 | вопрос3 | 1
Как видишь, вопросы разные, но название теста и его id одинаковые, то есть некоторые данные дублируются. Далее добавить к запросу answers, и всё.
313 1832487
>>829824
Без указания, на каком движке крутится сайт, вопрос бесмысленный
ваш Кэп
314 1832930
Есть следующая структура данных:
id: string
children: string[]
И еще какие-то поля.
В children хранится список id. Может быть несколько уровней вложенности. Как за один запрос вытащить все дерево сущностей начиная с какого-то id? В монге для такого можно сделать DBRef на ту же коллекцию.
Важная деталь - данные хранятся в эластике, но треда по nosql тут вроде нет.
315 1833024
КАК ВКАТИТЬСЯ?
316 1833361
>>833024
не быть тупым ебланом, забаненым в гугле

мимо
317 1834144
Товарищи ребятки здравствуйте!
Хочу вот чем поинтересоваться, правильной ли дорогой собственно говоря иду? Может кто из вас подкинет здравых мыслей.
Вводная: Пашу инженером конструктором на околосовковом предприятии. Неплохо знаю САПР со стороны технологов конструкторов. Знаю о существовании служб, занимающихся сопровождением САПР и КТТП.
Есть желание: перейти из сферы машиностроения через сопровождение САПР в айти. Так как на текущем месте и должности развиваться в айти не вижу возможности.
Задача общая исходя из советов грамотных товарищей и самоопределения: грести в Девопс.
Для этого решил начать с изучения sql поэтому сюда и пишу собственно
Предложили: изучать sql с помощью книги sql для чайников (т.к. в sql не разбираюсь. Только в универе что-то делал) плюс читать документацию по PostgreSQL. Также предложили пройти пару курсов в интернете.
Вопрос: правильная ли стратегия? Может что-то упускаю? Нужно ли что-то координально менять и глядеть как-то по другому на это вот все дело?
Также хочу попросить полезные источники информации для начинающего в области sql.
Пригодится любая информация.
319 1834646
>>834144
Антоша никогда не изучай ничего по книгам ДЛЯ ЧАЙНИКОВ
123.jpg5 Кб, 458x97
320 1834671
Уточните, а разве можно так путь к таблице писать? Этот запрос сможет что-то выполнить?
321 1834674
>>834671
NTFS не умеет в SQL.
Зато MS SQL Server умеет.
322 1834680
>>834674
Можно для дауна студента первых курсов объяснить чуть проще?
323 1834694
>>834680
Надо знать, что за БД, в зависимости от диалекта там может быть что угодно. Тогда, может, кто-нибудь знающий подскажет.
324 1834697
>>834694
Макета или доп. условий нет. Только этот запрос.
325 1834706
>>834697
Надо знать контекст, вдруг это просто псевдокод.
326 1834763
>>834706
Его, к сожалению, нет.
Допустим, в каких случаях
тот запрос сможет что-то выдать?
327 1834776
>>834144
Devops помоему слабо связан с sql. Если базы данных на проекте нет, то никак. Если хочешь в devops - то тебе надо грести скорее в unix-админы, получать там базовые знания по администрированию, а потом на это накладывать знания о всяких приблудах типа docker-ов, ansibl-ов, jenkins-ов и git
328 1834783
>>834763

> Его, к сожалению, нет.


Ну и забей тогда.

> Допустим, в каких случаях тот запрос сможет что-то выдать?


Если СУБД поддерживает такой синтаксис. Ничего конкретнее сказать нельзя.
329 1834784
>>834763
Это похоже на внешнюю таблицу. По указанному пути должен лежать скорее всего файл в определенном формате, например csv. Вроде в sqlserver такой синтаксис возможен, но путь тут юниксовый указан
330 1834786
>>834783
Цэ тестовое, я б забил.
331 1834843
1
sage 332 1834859
>>834843
Нет блять, 0.
333 1834979
Чуваки, у меня вопрос. Сам я вообще sql не знаю, делаю по работе только select по определенному запросу, в котором меняю where в зависимости от служебной необходимости.
Тут столкнулся с необходимостью вытащить из БД большой объем данных.

К примеру, у меня есть такой запрос:

SELECT ID, Name, Birthday
FROM Ants
WHERE ID LIKE '4464558'
OR ID LIKE '5645647'
OR ID LIKE '5431546'
OR ID LIKE '2678654'
OR ID LIKE '8864587'

Проблема в том, что в данной конкретной задаче этих ID не пять штук, а 30000, они уникальны, не повторяются, не соответствуют никаким диапазонам.
Я написал этот запрос с 30 тысячами OR и понимаю, что такой запрос - это ебланство. Но не понимаю, каким образом должен выглядеть нормальный запрос при необходимости вытащить данные именно при таких условиях. Толкните в нужную сторону.
А еще SQL Server Management Studio просто зависает после открытия такого большого запроса.
334 1835071
>>834979
Так не будет работать, есть ограничение на количество условий в where. Тебе нужна оберка которая будет скармливать запрос частями
335 1835078
>>834979
Если эти ID можно выбрать селектом из базы, тогда это просто (join, или cte, или `ID in (select id from ...)`, ит.п.)
Если же они вне базы, тогда только по частям.
336 1835476
>>834979
Можно через IN, но тоже хуйня.
Взрослый вариант это сделать временную таблицу с твоими айдишниками, а потом заджойнить с нужной.
Кури, что такое temporary table короче.
337 1835486
>>834979

>делаю по работе только select по определенному запросу, в котором меняю where в зависимости от служебной необходимости


Совсем дегенерат? Кем работаешь?
image.png10 Кб, 620x148
338 1835856
SELECT department
FROM employees
WHERE position = 'Software Developer'
GROUP BY department
HAVING COUNT(position) < 5

Посоны, нормально высрал? Проверить негде бля.
339 1835954
>>835856
вроде ок
340 1836054
>>830678
А какие знания были,когда 50к получал?
Разработка веб-приложения для хранения и защиты БД Аноним 341 1836400
Гайз! Нид хелп, плз! Как юный пекус, не имеющий опыта в написании курсовых. Советов мне! В чём может быть научная новизна в приложении - аналога oracle?
Что касается актуальности, то функционал веб-приложения реализуется через браузер, полностью поддерживает расширения CSS и полный набор HTML-тегов, а также отсутствует привязка к стандартной библиотеке. Обеспечена концепция детализации и перекрестная фильтрация. Встроен аппарат статистики и анализа данных, возможность построения 3D моделей. Обеспечена высокоуровневая защита данных через соответствие паттерну.
342 1836676
С чего начать изучение SQL?
Посоветуйте сайтов/книг/методичек из универов, про БД
343 1836839
>>836676
1. Освой самостоятельно sql Бен Форта
2. Sql ex
344 1836952
>>781628 (OP)

>-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны


Это что за индивид?
346 1836984
>>836676
Мне видеокурс Заура Трегулова очень помог "SQL с нуля до сертификата Oracle" - на скорости х1.5 - х2 самое то!
347 1837000
Есть ли какие нибудь курсы/статьи для практикующего разработчика не дба, то есть ровно те знания, что нужны деву средней руки
348 1837086
Гарантирован ли порядок присвоения столбцов в update statement'е?
Например в скрипте
update test_table
set
description = code,
code = replace(lower(code), ' ', '-');
могу ли я быть уверен, что всегда сначала обновится description, а потом после этого code?
349 1837122
>>837086
Слева-направо выполняется, про гарантии хуй знает, надо курить доки конкретного сорта дб.
15807601375510.jpg79 Кб, 701x548
351 1837154
Рубрика "читая ченджлоги"

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-22.html

>MySQL now implements derived condition pushdown for eligible queries.


блядь! не прошло и 20 лет! ну теперь то весь говновеб залетает!

>The InnoDB memcached plugin is deprecated and support for it will be removed in a future MySQL version.



Вот это я вообще не понял. Кому он мешал?
Хотя и не использовал, но тенденция все портить меня давно не радует.

>From MySQL 8.0.22, the statements START SLAVE, STOP SLAVE, SHOW SLAVE STATUS, SHOW SLAVE HOSTS and RESET SLAVE are deprecated.



Ну а это вообще пиздец.
Ладно хоть для совместимости старые операторы и статусы работают.
352 1838595
Как обстоят дела с релокацией у всяких ETLщиков и прочих разрабов БД?
353 1838962
Подскажите дауну, почему так не работает:
select maker from (select PC.model, PC.speed, Product.model, product.maker
from PC LEFT JOIN product on Product.model = PC.model where pc.speed >= 450)
В скобках же должна создаться новая таблица.
Задача с sql-ex.ru: Найдите производителей ПК с процессором не менее 450 Мгц. Вывести: Maker
354 1839024
>>838962
После скобок надо имя какое-нибудь этой таблице дать.
Я любую букву пишу.

Вобще, переусложнённый запрос, хватило бы:
SELECT Product.maker
FROM PC
LEFT JOIN Product ON Product.model=PC.model
WHERE PC.speed >= 450;
355 1839144
>>838595
да кому они нужны? индусов дохуя
356 1843081
кто юзал squirrel sql client, там есть cli версия, может кто подскажет как ею пользоваться, команда connect(alias) выполнилась, но признаков успеха не успеха почему-то нет, но например команда exec("SELECT * FROM test") уже валится с нул поинтер экспешн, хотя в гуи версии всё хорошо работает
sql-ex141.png29 Кб, 757x631
357 1843564
Задача 141 sql-ex.ru

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

Сделал вот такой запрос:

SELECT name,
CASE
WHEN DATEDIFF(DAY, mdate1, '2003-04-30') > 0 THEN DATEDIFF(DAY, mdate, mdate1)+1
ELSE CASE
WHEN DATEDIFF(DAY, mdate, '2003-04-30')+1 > 0 THEN DATEDIFF(DAY, mdate, '2003-04-30')+1
ELSE 0
END
END
FROM
(SELECT sl1.id_psg,
mdate,
mdate1
FROM (
(SELECT id_psg,
min(date) AS mdate
FROM pass_in_trip
WHERE id_psg in
(SELECT id_psg
FROM passenger)
GROUP BY id_psg) sl1
INNER JOIN
(SELECT id_psg,
max(date) AS mdate1
FROM pass_in_trip
WHERE id_psg in
(SELECT id_psg
FROM passenger)
GROUP BY id_psg) sl2 ON sl1.id_psg = sl2.id_psg)) sl3
INNER JOIN passenger ON sl3.id_psg = passenger.id_psg;

На тренировочной базе сошлось, а на тестовой (4) несовпадения.
ЧЯДНТ.
sql-ex141.png29 Кб, 757x631
357 1843564
Задача 141 sql-ex.ru

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

Сделал вот такой запрос:

SELECT name,
CASE
WHEN DATEDIFF(DAY, mdate1, '2003-04-30') > 0 THEN DATEDIFF(DAY, mdate, mdate1)+1
ELSE CASE
WHEN DATEDIFF(DAY, mdate, '2003-04-30')+1 > 0 THEN DATEDIFF(DAY, mdate, '2003-04-30')+1
ELSE 0
END
END
FROM
(SELECT sl1.id_psg,
mdate,
mdate1
FROM (
(SELECT id_psg,
min(date) AS mdate
FROM pass_in_trip
WHERE id_psg in
(SELECT id_psg
FROM passenger)
GROUP BY id_psg) sl1
INNER JOIN
(SELECT id_psg,
max(date) AS mdate1
FROM pass_in_trip
WHERE id_psg in
(SELECT id_psg
FROM passenger)
GROUP BY id_psg) sl2 ON sl1.id_psg = sl2.id_psg)) sl3
INNER JOIN passenger ON sl3.id_psg = passenger.id_psg;

На тренировочной базе сошлось, а на тестовой (4) несовпадения.
ЧЯДНТ.
o.png119 Кб, 1349x895
358 1844424
помохите только вкатился,
https://sql-academy.org/ru/guide/sorting
359 1844512
>>844424
Пиздуй гуглить валенок, такую хуйню даже спрашивать стыдно
360 1844732
>>843564
Я так понимаю таблица у нас имеет вид
Дата_полёта|ФИО

Вот моё виденье:
1) Делаем выборку только за апрель
2) Групируем по фамилиям.
3) Выбираем максимальную и минимальную дату полёта и считаем количество дней между ними.
361 1844733
>>844732
А ёбана, код отклеился

SELECT

name,
datediff(dd,max(date),min(date)) as КоличествоДней

from fly

where date>='20030501'
and date<='20030530'

group by name
362 1846506
Так блин, что-то не врубаю, как мне вставить в таблицу значения так, чтобы они обновили текущие строки а не просто вставили новые?

Вот скажем есть таблица где 2 колонки: имя (varchar) и возраст (integer). В таблице уже есть некоторые записи, как мне вставить туда новые записи так чтобы в случае совпадения имен уже существующая строчка перезаписывалась?
363 1846734
Анон, готовлюсь к собесу (веб-макака), дай каких-нибудь адекватных задач.
Только именно адекватных, не нужно блять олимпиадной ебалы. В принципе обычно спрашивают что-нибудь на джойн + группировка. Такое уже на уровне подкорки просто из практики. Но боюсь если хоть чуть посложнее спросят, то поплыву. Вот хочу просто хоть немного потренироваться.
364 1846745
365 1846963
>>781628 (OP)
Возможно платиновый вопрос но как в постгресе удалить БД вместе со всеми связанными джобами? Весь гугл перерыл а даже намека не нашел. Для MSSQL все просто а тут какой-то затык.
366 1847531

>Какой опцией в SQL обозначается выборка по различным значениям?


Подскажите что имеется ввиду вообще?
367 1847767
>>847531
distinct видимо
sqlite-sample-database-color[1].jpg77 Кб, 800x402
368 1847926
Аноны, объясните значки на концах линий, показывающих связи между таблицами на пикче.
Я знаю только отношения 1:1 1:M и M:M. А тут значков явно больше.
369 1847927
>>847926
Ты nullable не учел
370 1847931
>>847767
А, я понял. Спасибо.
371 1848070
Аноны, у меня есть таблицы в postgresql: purchases items, соответсвенно покупак на один итем может быть много, у items есть колонка price, как мне посчитать процент от продаж, который занимает один итем, в одном запросе не получается выбрать сумму для всех итемов и сумму для всех покупок одного итема, пробовал over() но там нельзя использовать where который мне нужен, пробовал with использовать, чтобы запомнить сумму, но тоже ошибка вываливается, вот пример запроса, который должен быть

select items.id, items.price, count(purchases.item_id), sum(items.price), /Тут должны быть проценты/ from purchases
inner join items on items.id = purchases.item_id
where date BETWEEN '20190101' and '20200101'
group by items.id
order by sum(-items.price)
limit 10;
372 1848347
>>781628 (OP)
В чем принцип работы CRM-систем? (везде где ни читаю какая-то инфоцыганская херня для манагеров и продаванов) Чем отличается от облачной БД? И каков вообще принцип функционирования этой херни?
373 1848397
>>848347
Ну прост. Собираешь данные о клиентах и все. Не забываешь им перезванивать. Смотришь отчеты.

Это тебе может кажется пургой, а люди простейшего накопления информации не делают.

По сутт принципа нет. Есть некое название типа ПО по предметной области.
image.png40 Кб, 507x343
374 1848402
>>847926
Есть такая система
376 1848434
Как вкатиться?
sql-ex.ru + sql-tutorial.ru ? или может есть на степике курсы какие?
377 1848452
>>848434
А зачем тебе? Вкатывайся в рякт
378 1848456
>>848452
получил повышение на работе, теперь работаю с и стал единственным ответственным за бд
много всего навалилось, пока работаю с готовыми отчетами/запросами от предыдущего человека, первое время он помогал если возникали вопросы и трудности
мои знания в скл закончились года два назад на курсе по бд когда получал вышку, естественно тогда забивал хуй и делал минимум чтобы получить зачет/экз/сдать курсач
сейчас нужны знания на случай чп (вдруг че сломается или понадобится написать новый запрос/отчет)
да и мой предшественник посоветовал изучить это дело сам он практиковался на sql-ex.ru и съябывать на место получше как сделал он сам, благо ресурсы соответствуют чтобы расти
379 1848467
>>848456
то есть ты ещё два года назад был студентом, а теперь работаешь и уже успел получить повышение, да ещё без особых знаний?

чо-та начинаю верить дефицитошизикам из соседнего треда
380 1848470
>>848456
ну ты и вруша. либо ты гений с уникальными навыками и знаниями, либо вброс для двача

>>848467
просто он блатной
381 1848474
>>848470
да не, почему
всякое бывает. видел в провинции мелкую конторку, начальство которой пилило бабло на заказиках от гос-ва. у них был похожий принцип набора кадров
382 1848475
>>848467
хз че за дефицитошизики, не был в соседнем треде
устроился еще студентом на линию тп, получил образование - перевели в отдел внедрения, там как раз попал в подчинение челику на чье место я попал, сейчас он ушел, а я на его место
история смешная на самом деле, в работе все нравилось, кроме отношений с ним, он все время меня дрочил, загружал работой бывало я заметно перерабатывал относительно других. я его просто ненавидел и хотел уволиться, все время казалось что это личная неприязнь, продолжалось около года. в итоге когда он увольнялся - посоветовал меня на свое место, меня даже без лишних вопросов повысили (был 5 минутный диалог с начальником, вопросы в стиле "Вот Имя тебя советовал, говорил ты хорошо работаешь и справляешься, ну как справишься?")
щас благодарен тому челику, ну и хочу послушаться его совета и вкатиться и дальше развиваться в этой области
к тому же рабочее место есть, так скажем условный трамплин, для начала нужно обучиться чтобы хотяб соответствовать своей должности, а дальше развиваться и съябывать

ну и вопрос повторю: sql-ex.ru + sql-tutorial.ru ? или что-то еще посоветуете?
383 1848478
>>848474
ты попал в точку
384 1848502
Решаю 18 задачу в скл-ех, пиздос встал, не могу выкупить, как там эти переменные вводятся, а потом еще по ним два иннер джоина. Если кто может глянуть, помогите, пожалуйста, посоветуйте статью почитать на эту тему.
385 1848503
Ответ кидать не надо, если что.
386 1848517
>>848502
Братан, это задача про цветные принтеры?
Посмотрел свое решение, и походу ты слишком усложняешь.
Плюс там же к каждой задаче есть рекомендованые темы
387 1848569
>>848517
Блядь, результат получил верный, но теперь на проверочной базе тест не прошел. Ты сколько примерно эту задачку решал? Я сижу второй день, и у меня чувство, что я тупой, как валенок.
388 1848585
>>848569
Конкретно ее решил скорее всего быстро. Но над другими езадачами аналогично сидел пару дней и пытлася решить.
389 1848673
>>848585
Все, решил. Нахуя там груп бай?
390 1848707
>>848673
Я не знаю, я решал без группировки)
391 1848717
>>848673
Скинь решение, я потом свое дам
Screenshot20201105-161606.png934 Кб, 720x1520
392 1848726
>>848717
Сорян, что фотография, не с домашнего пека сижу. Ну я понял, что там груп бай можно заменить дистинктом. Коварная штука этот проверочный набор данных, приходится визуализировать возможную проблему.
393 1848879
>>783556

>дб господ


Удачи трудоустраиваться в "Рога и Копыта" за 40к - дрочить sql query день и ночь под очередное гавно, выкаченное еще 8 лет назад
394 1848888
Как обновить сразу много значений в таблицей? Вот есть у меня список кортежей вида (name, age, department_id), команда UPDATE обновляет лишь одну строчку за раз, как мне вбросить весь список целиком чтобы обновлялись значения где name совпал?
396 1848932
>>848879
учишь к скл ещё питон
и ты теперь не скл-пердун, а вполне себе модный дата-инженер
15930938840380.gif3,6 Мб, 295x222
397 1848966
>>848879
Блядь, откуда вы такие берётесь. У меня один друг работает в повер биай, говорит что там скл джуны от 60к начинают, при этом приходят ебла, которые с нулевыми знаниями просят 200к, хотя он сам 200к получает, правда он в питоне разбирается ещё. Знакомая тян пришла на 40к в банк системным аналитиком вообще с нулевыми знаниями, не по знакомству. Через год повысили до 70к при том, что она хуи пинала.
Двач какая-то депрессивная зона всего самого хуевого.
398 1849002
>>848966
Просто ошибка выжившего, джуны которые на 100к вкатились(как я например) просто не будут об этом писать.
399 1849031
>>849002
Ну чёт я скорее поверю, что ошибка выжившего это 40к после года опыта работы. Я конструктором 67 на руки получаю после двух лет опыта.
Безымянный.png5 Кб, 600x251
400 1849289
401 1849328
>>848907

>case when


Чего блять? А если у меня таких case 30 штук?
402 1849469
Мудрый анон, нужна твоя помощь.

Есть таблица с продажами, [1..x] магазинов, [1..y] наименований товаров, есть таблица с планами на следующий год.

Задача сводится к сведению таблицы в одну с показателями:
дата, магаз, товар, продажа, план/null, продажа прошлого года/null и несколько расчётов по последним трём колонкам.
Проблема заключается в очень долгом выполнении запроса; задача предполагает использовать UNION / UNION ALL для решения, но я даже примерно не могу представить, нахуя он тут нужен.
Первым пробовал вариант с join'ами каждого нужного поля -> время выполнения стремится к бесконечности.
Вторым пробовал WITH (собрать таблицу) и вытаскивать данные из неё. В таблице данные уже прошли через все процедурные фильтры (дата, магазин).
403 1849642
>>848932
Есл ив питоне шаришь то как в sqlalchemy сделать массовое обновление таблицы из >>848888
То есть ей передаем массив кортежей а она далее все делает как надо?
404 1849865
>>849642
conn.execute( sqlalchemy.sql.text(<SQL>).bindparams(<параметры>) )
405 1849934
Даров почоны, вляпался тут в скул и пытаюсь его забодать. К результирующим толбцам бла бла AS thing можно ли обращаться далее по квери в теле (WHERE ...) и использовать в ORDER BY? Если да, то как?
406 1849939
>>849934
Нет, или подзапрос.
407 1849943
>>849939
Можно подробнее про подзапрос?
У меня код такого плана
SELECT ...
FROM ...
LEFT JOIN ...
ARRAY_REMOVE(ARRAY_AGG(DISTINCT LOWER(lists.name))) AS goods
WHERE ...
ORDER BY ...

Сортировка важнее, но главное, чтобы не пришлось передрючивать уже имеющийся запрос с ног на голову.
408 1849946
>>849943
SELECT *
FROM (<твой запрос>) AS Z
WHERE ...
ORDER BY ...;

`AS Z` - это обязательно, хотя буква - на выбор
409 1849953
>>849946
Вот это я и имел ввиду под "передрючиванием", не подходит. array_agg(...) в сортировку тоже никак не впихнуть?
410 1850036
>>849946

>`AS Z` - это обязательно


От субд зависит
411 1850118
>>849953
Короче можно, выходит ебано, но пользоваться можно.
сам себе ответил
412 1850150
1
413 1850217
>>849934
Гугли CTE
414 1850219
>>850217
Верно ли я понял, что CTE - это такой ловкий способ писать вложенные запросы? Напромер:

WITH Z AS (<мой запрос>)
SELECT *
FROM Z
WHERE ...
ORDER BY ...;
415 1850233
Помогите с кодом, существует ли такое?
>>1850231 →
416 1850246
417 1853308
Кто-нибудь использует DBeaver?
Подключаюсь к удаленной постгресовской бд на сервере, лог/пасс есть, подключение проходит, отображается вся база, таблицы, колонки, список ролей, диспетчер сессий. Но данные не отображаются вообще, т.к. ни один запрос (SELECT в т.ч.) не проходит, ошибка SQL Error [42501]: ERROR: permission denied. Как фиксить? Права на запросы есть
418 1853384
>>853308
А написано что нет. Кому ты пиздишь?
419 1853709
Есть один скрипт для MS SQL. Хочу, что бы все поля таблиц в этом скрипте стали обёрнуты в квадратные скобки, по типу:
Было: Animal.Name
Должно стать: Animal.[Name]

Есть ли готовый скрипт/функция ms sql менеджера/регулярка которая сделает это? Вообще, что угодно подойдёт, пусть хоть сайт в интернете.
420 1854542
Как вкатиться то? Нужно сделать простую бд
421 1854988
>>853384
Всё верно, права потом пофиксил админ базы и всё заработало
422 1855476
Так чё с релокацией у ETLщиков?
423 1855720
>>855476
Вроде зп у них норм, в чем вопрос не понял
424 1855861
>>855720
Я смогу в условный Сингапур перекатиться?
425 1855916
Аноны, есть те, кто парсил строку в Sqlite3? В существующей таблице столбец с данными, разделенными запятой (comma-separated).
Есть ли простой и легкий способ разобрать эти данные по столбцам в другую таблицу ТОЛЬКО средствами SQL?
426 1855972
>>855916
Если ты уверен, что в значениях нет символов кавычек, можешь попробовать превратить эту строку в JSON массив через замену и конкатинацию, и далее использовать табличную функцию json_each для её разбиения.
427 1856026
>>855861
Ап вопросу.
428 1856224
>>855972
ниасилил, сделал питоном.
429 1856281
Пытаюсь в пг распарсить xml в таблицу, но почему ловлю следующий экзепшен. Чо я делаю не так?

SQL Error [2200M]: ERROR: could not parse XML document
Подробности: line 1: Extra content at the end of the document
<node>1</node><node>2</node><node>3</node>
^

select *
from xmltable('$n' passing (('<node>'+replace('1;2;3',';','</node><node>')+'</node>')::xml)
columns "Value" int path 'node') vals
430 1856351
Как эту хуйню решить? Я не понимаю, я менял всё, я меня соединение таблиц, сами таблицы местами, где я наебался? Я вообще не понимаю, как результат верный а решение неправильное?
https://www.sql-ex.ru/learn_exercises.php?LN=14
Screenshot20201115-082816.jpg675 Кб, 1080x2220
431 1856517
>>856351
Вот решение, думай сам где проебался
"Ответ верный, а решение неверное" грубо говоря означает что твой текущий код подогнан к текущей базе данных
432 1857303
>>855861
Тоже бы про перекат послушал. Бамп.
433 1857515
>>855861
Знаю админа бд одного мощного - он в сингапур перекатился, потом выкатился назад. Грустно и скучно стало на чужбине.
Мне в гермашке как-то вакансию с релокейтом предагали, но по деньгам не интересно было.
По базам редко такие вакансии проскакивают. И это не етль - а администрирование + оптимизация/разработка, проектирование интеграций с бд и потоков данных обычно
434 1857750
>>857515
Админы вообще ещё живы, лол? Я думал они все передохли с приходом облаков. А в оптимизацию я тоже умею, в разработку - тем более.
435 1857780
Плюс я бы с удовольствием бы послушал про зп местных.
Тут есть чистые базовики? Мб ДБАшники? Как должность называется? Какие задачи выполняете? Сколько уже работаете? Сколько получаете?
image.png88 Кб, 1836x389
436 1857813
Бля 10 лет назад ковырял я этот sql-ex и забросил потому что была такая залупа, что непонять об че разъебался. 10 лет прошло, а они с этим ни сделали ни ху я.
437 1857839
>>857813
Это спецом сделали, лалка.
438 1857901
>>857839
Я понимаю что спецом, но мне как понять в какую сторону копать? Получается мне надо придумывать какие-то дополнительные данные, которые своим запросом я не отсекаю. А могли бы намекнуть.
439 1858063
>>857780
80к, етл
440 1858217
>>858063
Чё так мало?
441 1858235
>>858217
Хз, ну так получилось, не дс.
442 1858241
>>858217
слыш, для не-дс нормально
этож не рякт или гейос
вакансий мало, да ещё злобный энтерпрайз небось
мимо-чел
443 1858244
>>858241
А нахера вы опущи позволяете платить вам меньше кабанчику в мухосрани, когда он наоборот экономит на аренде офиса неебацца сколько, снимая его в мухосрани а не в дс, а работу вашу один хуй продаёт заграничным заказчикам, что кобаньствуя в москве, что кобаньствуя в мухосрани вашей?
444 1858255
>>858235
>>858241

>не дс


Ну, наверное, для мухсорани норм даже для реакта.
445 1859165
Есть табличка с полями user_id и timestamp.
Надо для каждого id оставить три последних записи, остальные удалить.
446 1859185
>>859165
Row number по юзеру, с сортировкой по дате(только с desc не проебись)
447 1859288
>>857750
Живее всех живых.
Какая разница, облако - не облако? Ну будет админ сидеть на строне облака а не на стороне клиента. Экспертиза все равно нужна.

Тех кто чисто внутри БД что-то делает - таких наверно нет. Обычно это работа/настройки и на стороне ОС и на стороне БД. Сильные админы обычно еще и в unix-ах хорошо шарят.

В ДС норм админ на энтерпрайзе может 200к и больше получать. Скорее даже не меньше 200.

Я 6 лет отработал чисто на базах, начинал с etl - потом ушел в более системную область. Когда ты работаешь etl-щиком то все твои задачи в основном сосредоточены внутри бд и ограничены самой бд - через 2 года мне стало скучно. Сейчас у меня много технических задач на уровне взаимодействия бд и ОС и другим ПО. Много времени может занимать разбор багов внутри бд, поиск обходных путей. Сложно выделить какой-то конкретный тип задач. Есть кластер с одной или несколькими бд к которому есть определенные требования и ты должен сделать так, что-бы он функционировал и удовлетворял этим требованиям и следить за этим - отсюда проистекают всевозможные задачи)

В должности никак не отражено, что я работаю именно с бд.
Года два-три назад зп перевалила за 200
448 1859378
Умоляю покажите как выглядит ссылка на стороне СУБД не могу разобраться
Нарисовал такую табличку вроде все правильно, но моя ссылка - primartkey одинаковая а одинкавых ключей небывает
449 1859379
450 1859380
>>859378
Не отправляется с телефона в общем таблица такая
Ссылка Данные. Событие
1F. 20000. Размер
1F. 2. Уровень
451 1859433
>>859288

>потом ушел в более системную область


Круть, а предыдущий опыт тебе как-то помогает в новых задачах или, может, помог при трудоустройстве?
452 1859824
>>781628 (OP)
Пизда рулю. Накосячил немного с SEQUENCE в Postgresql, захотел ее удалить чтоб заменить другой но во время DROP SEQUENCE ожидаемо выскочило:
cannot drop sequence operators_id_seq because other objects depend on it
Потому что эта последовательность уже приписана к колонке id в той таблице operators... Мне надо удалить ее и заменить другой, как это сделать, не стирая саму таблицу?
453 1859933
>>859824
postgre рулю
image.png66 Кб, 579x535
454 1859955
Ребяты. Помогите, пара вопросов
Как сделать правильно связь многие ко многим между Route и Worker. По одной стороне через Team сделал, но вот через Company не пойму как лучше организовать. Потому что вроде выглядит все логично
И не могу еще к третьей нормальной форме это все привести, типа атрибут airplane_type в сущности Route или в сущности class атрибут number_of_seats и т.п.
455 1860484
>>857780
Чисто пишу запросики для отчетиков, зп 100к нск
456 1860515
В шапке ничего нету, поэтому подскажите, пожалуйста, годных учебников по sql с нуля. На работке кликхаус запилили наконец-то, пора изучать.
457 1860738
>>860515
В кликзхаусе вроде не чистый скуль, а сильно урезанный, все сложное типа джоинов и оконных функций ненужно.
458 1860756
Аноны, что бы глянуть/почитать по оптимизации view в Postgres 11?

Есть две таблицы(500мб и 30мб размерами), из 30мб таблицы сделана view_1.
Затем, через union all, соединяю две таблицы и view_1 в одну жирную view. Запросы к этой жирной view занимают довольно приличное время - десятки секунд. Собственно, отсюда и вопрос - в какую сторону смотреть и что делать для оптимизаци.
f20-cv.jpg14 Кб, 300x240
459 1860777
>>860756
Посмотри ПЛАН.
K.O.
460 1860789
>>859433
Направление я менял в рамках одного места работы, поэтому для трудоустройства наверно нет. О том помагает ли предыдущий опыт в текущих задачах - частично да, частично нет. Знание каких-то конкретных etl инструментов мне сейчас не требуется, но базовые какие-то принципы - да нужны
image.png103 Кб, 1048x760
461 1861176
>>860777
Вот такая хуйня получилась.
Сделал "SELECT *" т.к. подобный запрос в БД шлет tableau и выкачивает данные себе. Последний раз этот запрос занял 2 часа и потом просто отсоединилось, не закончив.
462 1861293
>>861176
Ебать, добавил составные индексы и все летает. Охуенна.
463 1861365
>>861176

>Сделал "SELECT *" т.к. подобный запрос в БД шлет tableau и выкачивает данные себе.


И не похуй ли, если они к себе Extract делают?
Screenshot2020-11-2018-53-52.png312 Кб, 659x157
464 1861435
>>861365
Так он его не мог сделать,
465 1861465
>>861435
так зачем ему делать, если они обычно просто данные линейно выкачивают?
Просто интересно. Они не хотят выкачивать?
466 1861499
>>861465
Данные он выкачивает из таблицы, вместо таблицы у меня view. Соответственно когда он начинает "выкачивать данные" он обращается к этой вьюхе и там начинаются вычесления для того что бы вернуть в табло данные в виде готовой таблицы. И вот уже эти вычисления при построении вьюхи производились слишком долго.
467 1861505
Сап, аноны. Глупый вопрос. Если у меня есть подзапрос, использующий row_number(), мешает ли это оптимизации соединений этого подзапроса? Если его таблицы используются ещё несколько раз?
468 1861508
>>861505
row_number() и потом фильтр по нему, точнее говоря. Нет, я не могу от него пока избавиться, я не могу выразить условие иначе.
469 1861597
>>861505
По идее нет. Во всяком случае это на прядок быстрее подзапросов и групбааев используемых для решения таких же кейсов.
470 1862504
>>849469
Пробуй через with с фильтрами, плюс можешь поддержать индексами. Декомпозируй и смотри за сколько выполняются куски, ищи самую медленную часть, смотри план запроса по ней.
471 1862505
>>848888
Можно сделать генератор скрипта, по виду:

SELECT "UPDATE @TABLENAME SET" ZALUPA "WHERE" TABLENAME.ROW1
FROM @TABLENAME

Таким образом он тебе нарежет запросов, а ты просто запустишь батчем
472 1862822
>>781628 (OP)
Посоветуйте годных базовых книг/курсов по базам данных.
473 1862909
>>862822
Тут хорошие курсы есть
https://www.youtube.com/c/SQLDeveloperBI
474 1862982
>>862909
Пасиб анон, заценим
IMG20201123054617051.jpg63 Кб, 1280x352
475 1863438
Короче не особо могу в бд, но курсач срал на это, потому прошу помочь. Есть такой запрос, но мне ещё надо получить сумму последнего столбца по полю orderID. Как это сделать?
476 1863442
>>863438
Все, я разобрался
477 1863999
Почему потсгрес иногда начинает тупить? Вот есть таблица на которой я тестирую функции. В функции я эту таблицу в начале делаю тракейт, потом копирую туда данные из копии этой таблицы и потом уже выполняю всякую дичь. И вот в начале все работает ок, но потом скорость просто в ноль падает. Вакуум аналайз пробовал делать, даже растартил пострес. Толку нету.
478 1864319
>>863999
Чел ну ты хуйню спрашиваешь, предлагаешь лечить по фотографии. Пиздуй смотри логи\нагрузку на систмеу\на бд\план запросов.
479 1864729
>>864319
Логи чего именно смотреть?
480 1864995
Сап бдая. Мне бы справочник Станека по Sql серверу 2012 где откопать. Называется "Microsoft SQL Server 2012: Справочник администратора", Уильям Станек. Весь гугл перерыл, нашел только англоверсию, и ту неполную. Есть какие-то мутные сайты с регистрацией по мылу, но подтверждения нихуя не приходят, а на рутрекере только говно мамонта по sql server 2005 нашел. Вдруг есть тут у кого.
481 1865002
>>864995
На орреле через триал либо тор.
482 1865007
>>865002

> На орреле через триал


Попудробнее можно плз
483 1865049
Анон, а что за конструкция вида select from (select from...)? Дополнительно профильтровать селект в скобках? Разве для этого не having используется?
484 1865053
>>865049
Это подзапрос. Не всё возможно сделать через having, и не всё удобно через него делать.
485 1865099
>>865007
Идешь на сайт orelly, регаешся тебе дают триал на недели с доступом ко всем книгам. Через неделю регаешь новую почту. Там даже подтверждение не нужно, просто на несуществующую можно регать

>>865049
Гугли табличные выражения, делает тоже самое но в отдельной конструкции.
486 1865102
>>865099

> Идешь на сайт orelly, регаешся тебе дают триал на недели с доступом ко всем книгам. Через неделю регаешь новую почту. Там даже подтверждение не нужно, просто на несуществующую можно регать


Спасибо. Я смотрю там все на ингрише, там локализованные на русском версии книг есть вообще? Просто толку мне пердолиться с триалами если там только версия на английском, которая у меня и так есть
487 1865143
>>865049
Как ты будешь фильтровать оконные или аналитические ф-ци не в терадате?
488 1865226
>>865099
А им разве кредитка не нужна там?
Я просто хотел еще и на Packpub подписаться. Есть хорошие книженции там по не очень популярным технологиям
489 1865496
>>865102
А тебе на сверхдержавном, тогда мимо
>>865226
Ненужна
490 1865742
Можно ли в эластике каким-то хитрым запросом вытащить всю иерархию документов за один вопрос, при условии, что у каждого документа есть ссылки (айди) на своих родителей и детей?
491 1866689

>Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование


Ребята, это чисто я, ток собеседование на стажера дата-аналитика в понедельник...
sql будет не мейн темой, но сказали, шо надо уметь делать простые запросы и знать базовую теорию насколько базовую, не сказали
Подскажите, что лучше: порешать литкодовские изи или sql-ex задачки? (времени на то и другое нет)
И ещё бы где-то найти инфу в супер сжатом виде по внутреннему устройству бд, индексам, транкзакциям, уровням изоляций итд
492 1866719
>>781628 (OP)
Сейчас читаю книгу lerning sql. Там встретился такой пример

SELECT groups.name, COUNT(*) num_customers
FROM
(SELECT SUM(a.avail_balance) cust_balance
FROM account a INNER JOIN product p
ON a.product_cd = p.product_cd
WHERE p.product_type_cd = 'ACCOUNT'
GROUP BY a.cust_id) cust_rollup
INNER JOIN
(SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit
UNION ALL
SELECT 'Average Joes' name, 5000 low_limit,
9999.99 high_limit
UNION ALL
SELECT 'Heavy Hitters' name, 10000 low_limit,
9999999.99 high_limit) groups
ON cust_rollup.cust_balance
BETWEEN groups.low_limit AND groups.high_limit
GROUP BY groups.name;

отдельно подзапросы выполняются все ок. С синтаксисом тоже ок. Даже если в глаза не ебаться и прочитать запрос то все в порядке.

Но мускуль ругается на
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups
on cust_rollup.cust_balance between groups.low_limit and groups.hig' at line 14

Я чет понять не могу где там ошибка
492 1866719
>>781628 (OP)
Сейчас читаю книгу lerning sql. Там встретился такой пример

SELECT groups.name, COUNT(*) num_customers
FROM
(SELECT SUM(a.avail_balance) cust_balance
FROM account a INNER JOIN product p
ON a.product_cd = p.product_cd
WHERE p.product_type_cd = 'ACCOUNT'
GROUP BY a.cust_id) cust_rollup
INNER JOIN
(SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit
UNION ALL
SELECT 'Average Joes' name, 5000 low_limit,
9999.99 high_limit
UNION ALL
SELECT 'Heavy Hitters' name, 10000 low_limit,
9999999.99 high_limit) groups
ON cust_rollup.cust_balance
BETWEEN groups.low_limit AND groups.high_limit
GROUP BY groups.name;

отдельно подзапросы выполняются все ок. С синтаксисом тоже ок. Даже если в глаза не ебаться и прочитать запрос то все в порядке.

Но мускуль ругается на
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups
on cust_rollup.cust_balance between groups.low_limit and groups.hig' at line 14

Я чет понять не могу где там ошибка
493 1867743
Анон, мне на собесе дали такую задачу:

> Есть запрос


> SELECT * FROM employee WHERE sex = 'm' AND salary > 300 AND age = 20


> Нужно сделать индекс КОНКРЕТНО БУКВАЛЬНО ПОД ЭТОТ запрос, чтобы именно такой запрос был супер-быстрым



Короче, как я понял, здесь фишка в том что нужен определенный составной индекс.
Я ответил что типа сделаем index(salary, sex) и отдельно index(age). Я не знаю почему я решил age выносить отдельно. И я до сих пор не догоняю, как правильно. У нас же типа btree, в составном индексе будет сортировка по вложенным полям... блять, тут есть вообще разница в порядке полей? И вообще смысл в составном индексе?
494 1867747
>>867743
Да, еще следом был вопрос "а если хотим сортировать по created_at".

Я вот сейчас подумал, что мы можем сделать partial-индекс index(id) WHERE по этому условию. А для сортировки добавить отдельный index(created_at). Не?
image.png17 Кб, 363x317
495 1867898
Гайс смотрите есть таблица(сформирована типо из банковских проводок), надо вывести промежутки дат, когда сумма не нулевая. Я смотрел подобную задачу решали оконной функцией где херачили группы и потом выбирали минимальную и максимальную, но я не расчехляю как её сюда можно применить. Хотя бы намекните как это реализовать можно.
496 1867967
>>867898
Гугли Gaps and Islands SQL
497 1868722
>>867967
Благодарю.
498 1869137
>>781628 (OP)
Я не могу понять, так left outer join и left join это одно и то же или разное? Почти везде пишут, что это одно и то же, но тогда к чему испльзовать именно конструкцию со словом outer?
499 1869140
>>869137
Потому что в SQL есть больше одного способа сделать что угодно. Те же AS и IS.
500 1869187
>>869137
Первый вариант полная форма, но если мы используем left, сразу становится понятно что это outer, т.к. направленных inner-ов не бывает. Можно сравнить с AS, писать не обязательно и с пробелом работает. Использование outer удобно на этапе обучения.
изображение.png451 Кб, 1024x576
501 1869253
>>869187

>AS


Сравнить с AS твоей мамки
16013123015890.png10 Кб, 804x743
502 1869598
Когда будет перекот, сделойте шапкю и F.A.Q
503 1869617
ПЕРЕКАТ >>1869616 (OP)
ПЕРЕКАТ >>1869616 (OP)
ПЕРЕКАТ >>1869616 (OP)
504 1889017
Поясните. Последовательность операций не меняющих содержимое базы считается за ТРАНЗАКЦИЮ?
505 1911251
>>856351
Вероятно, не актуально, но решения некоторых задач на sql-ex можно найти в гугле :3
506 1928514
Сап, аноны. Есть таблица с десятками миллионами записей и она постоянно растет. У каждой записи есть уникальный ключ (то есть уже проиндексирована). Задача: прочитать записи в таблице по уникальномым ключам. Проблема: с увеличением базы - большое время ожидания. Я вижу выход только в репликации и шардинге базы. Кэширование не поможет так как постоянно выбираются разные данные, соответственно полезно в кеш попадет мало. Что можете посоветовать?
507 1938672
может кто помочь в связях между таблицами разобраться? и минимально объяснить
508 1940192
>>803670
Триггер выполнится единожды для всего запроса, весь набор будет лежать в inserted
Clip2net210408225526.png63 Кб, 959x873
509 1990612
Анон, что с меня она хочет? Создал 2 пользоватиля через консоль, не через команду createuser. Теперь не могу удалить, сменить роли и тп. Вот пример удаление других пользователей.
Тред утонул или удален.
Это копия, сохраненная 22 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски