Size: a a a

2021 May 11

R

RAEman in sql_ninja
В чем проблема создать почти идентичную копию таблицы (но с измененным нужным полем) сделать insert into select * from table, а затем альтернуть обе таблицы чтобы "копия" стала "оригиналом"?
источник

F

Frankie4Fingers in sql_ninja
А Альтер колумн низя сделать?
источник

F

Frankie4Fingers in sql_ninja
Либо ренейм новой таблы, ага
источник

АС

Ананьев Сергей... in sql_ninja
В итоге так и делаем, из-за того что записей очень много, процесс будет не быстрый. А перед началом решил спросить в этом замечательном чатике, если ли более элегантный способ. Одна голова хороша, а куча sql нинзей лучше.
источник

A🌶

Anna 🌶 in sql_ninja
поторопилась, простите, исправлюсь.
источник

A🌶

Anna 🌶 in sql_ninja
+ спасибо, интересная мысль. для учёбы утащу.
источник

N

Ninja Reputation in sql_ninja
Репутация @RAEman: 1
источник

M

Mr. M in sql_ninja
всем привет такая задача "Вывести топ 3 сотрудника с самой высокой зарплатой в каждом отделе" талица состоит из EmployeeID, DepartmentID, Salary.                             мой скрипт                                                                                                                                   SELECT *
FROM Employees e
WHERE e.Salary IN (SELECT MAX(Salary) FROM Employees max WHERE max.DepartmentID = e.DepartmentID ORDER BY Salary LIMIT 3 ); Как я понимаю он неправильный так как берет не из каждого отдела?
источник

E

Elvira in sql_ninja
Попробуй через cross apply
источник

E

Elvira in sql_ninja
Select a.depid, b.salary
From tab a
Cross apply (select top 3 salary
From tab b
Where a.depID =b.depID
Order by 1 desc)
источник

E

Elvira in sql_ninja
Вроде так
источник

M

Mr. M in sql_ninja
спасибо, ушел читать про cross apply
источник

N

Ninja Reputation in sql_ninja
Репутация @Elptiza: 6
источник

A

Alex96 in sql_ninja
А нельзя через ранк ? Потом селект из него и условие where rn in (1,3)
источник

E

Elvira in sql_ninja
и такой вариант возможен
источник

A

Alex96 in sql_ninja
Крос апли что то сложно
источник

O

OrderByName in sql_ninja
А оконные функции тут не лучше будут?
источник

A

Alex96 in sql_ninja
Зач
источник

L

Les in sql_ninja
лучше оконные функции
источник
2021 May 12

DI

Dmitriy Ivanov in sql_ninja
Я за cross apply, меньше кода.
Чего сложного тут увидели не понятно.
Разбор как это работает:
Слева таблица а, справа таблица b.
Для любого значения слева берется top 3 значения справа отсортированных по наибольшее зп и у которого такой же Id department, таким образом получаем перемножение 1 строки слева на  3 строки справа = 3 новые строки. Проблема в том, что слева может быть не уникальное значение, тогда выбираем уникальные и точно также cross apply на правые значения делаем, или distinct на конечном запросе.
источник