Size: a a a

2020 July 09

ls

løst søul in ru_mysql
В две тысяче лохматом была то ли в 5.5 версии фича add unique index ignore
источник

PM

Pavel Makhnev in ru_mysql
так у него колонки нет
источник

PM

Pavel Makhnev in ru_mysql
не сыгнорит
источник

ls

løst søul in ru_mysql
@ihanick не в курсе кста почему убрали, прикольная фича
источник

PM

Pavel Makhnev in ru_mysql
плюс данные можно похерить так
источник

PM

Pavel Makhnev in ru_mysql
фу так делать
источник

NI

Nickolay Ihalainen in ru_mysql
https://dev.mysql.com/worklog/task/?id=7395 репликацию ломало
источник

ls

løst søul in ru_mysql
Уот это скорость
источник

ls

løst søul in ru_mysql
Pavel Makhnev
плюс данные можно похерить так
Согласен
источник

ls

løst søul in ru_mysql
Удалить не те дубли
источник

AS

Arsen Sultanov in ru_mysql
привет, помогите написать запрос пожалуйста

CREATE TABLE DEPARTMENT (
 DEPARTMENTID INT(6) UNSIGNED PRIMARY KEY,
 DEPARTMENTNAME VARCHAR(30) NOT NULL
);

CREATE TABLE PERSON (
 PERSONID INT(10) UNSIGNED PRIMARY KEY,
 PERSONNAME VARCHAR(30) NOT NULL,
 DEPARTMENTID INT(6) UNSIGNED  NOT NULL,
 FOREIGN KEY (DEPARTMENTID) REFERENCES DEPARTMENT(DEPARTMENTID)
);

CREATE TABLE SALARY (
 PERSONID INT(6) UNSIGNED,
 SALARY INT(6) UNSIGNED NOT NULL,
 FOREIGN KEY (PERSONID) REFERENCES PERSON(PERSONID)
);

INSERT INTO DEPARTMENT (DEPARTMENTID, DEPARTMENTNAME)
VALUE (1, 'Бухгалтерия'), (2, 'Поставки');

INSERT INTO PERSON (PERSONID, PERSONNAME, DEPARTMENTID)
VALUE (1, 'Иванов', 1), (2, 'Петров', 1), (3, 'Сидоров', 2);

INSERT INTO SALARY (PERSONID, SALARY)
VALUE (1, 10000), (2, 20000), (3, 23000);


нужен запрос, в результате которого будет выборка следующего вида:
PERSONNAME (Фамилия), DEPARTMENTNAME (Департамент), SALARY (Зарплата), AVGSALARY (Средняя по департаменту)


немогу понять как применить avg
SELECT P.PERSONNAME, D.DEPARTMENTNAME, S.SALARY FROM PERSON P
LEFT OUTER JOIN DEPARTMENT D ON P.DEPARTMENTID = D.DEPARTMENTID
LEFT OUTER JOIN SALARY S ON P.PERSONID = S.PERSONID;
источник
2020 July 10

M

Mb1W@ in ru_mysql
Arsen Sultanov
привет, помогите написать запрос пожалуйста

CREATE TABLE DEPARTMENT (
 DEPARTMENTID INT(6) UNSIGNED PRIMARY KEY,
 DEPARTMENTNAME VARCHAR(30) NOT NULL
);

CREATE TABLE PERSON (
 PERSONID INT(10) UNSIGNED PRIMARY KEY,
 PERSONNAME VARCHAR(30) NOT NULL,
 DEPARTMENTID INT(6) UNSIGNED  NOT NULL,
 FOREIGN KEY (DEPARTMENTID) REFERENCES DEPARTMENT(DEPARTMENTID)
);

CREATE TABLE SALARY (
 PERSONID INT(6) UNSIGNED,
 SALARY INT(6) UNSIGNED NOT NULL,
 FOREIGN KEY (PERSONID) REFERENCES PERSON(PERSONID)
);

INSERT INTO DEPARTMENT (DEPARTMENTID, DEPARTMENTNAME)
VALUE (1, 'Бухгалтерия'), (2, 'Поставки');

INSERT INTO PERSON (PERSONID, PERSONNAME, DEPARTMENTID)
VALUE (1, 'Иванов', 1), (2, 'Петров', 1), (3, 'Сидоров', 2);

INSERT INTO SALARY (PERSONID, SALARY)
VALUE (1, 10000), (2, 20000), (3, 23000);


нужен запрос, в результате которого будет выборка следующего вида:
PERSONNAME (Фамилия), DEPARTMENTNAME (Департамент), SALARY (Зарплата), AVGSALARY (Средняя по департаменту)


немогу понять как применить avg
SELECT P.PERSONNAME, D.DEPARTMENTNAME, S.SALARY FROM PERSON P
LEFT OUTER JOIN DEPARTMENT D ON P.DEPARTMENTID = D.DEPARTMENTID
LEFT OUTER JOIN SALARY S ON P.PERSONID = S.PERSONID;
Не сильно красиво, но будет работать:
SELECT P.PERSONNAME, D.DEPARTMENTNAME, S.SALARY,AverageSalaryForDep.AverageSALARY
FROM PERSON P
INNER JOIN DEPARTMENT D ON P.DEPARTMENTID = D.DEPARTMENTID
INNER JOIN SALARY S ON P.PERSONID = S.PERSONID
INNER JOIN (SELECT DEPARTMENTID, AVG(SALARY) AS AverageSALARY FROM SALARY ST
INNER JOIN PERSON PT ON PT.PERSONID = ST.PERSONID
GROUP BY DEPARTMENTID) as AverageSalaryForDep on AverageSalaryForDep.DEPARTMENTID = P.DEPARTMENTID;
источник

M

Mb1W@ in ru_mysql
Вот так будет выглядеть вывод:
+------------+----------------+--------+---------------+
| PERSONNAME | DEPARTMENTNAME | SALARY | AverageSALARY |
+------------+----------------+--------+---------------+
| Ivanov     | Bookkeeping    |  10000 |    15000.0000 |
| Petrov     | Bookkeeping    |  20000 |    15000.0000 |
| Sidorov    | Supplies       |  23000 |    23000.0000 |
+------------+----------------+--------+---------------+
3 rows in set (0.00 sec)
источник

AS

Arsen Sultanov in ru_mysql
Mb1W@
Не сильно красиво, но будет работать:
SELECT P.PERSONNAME, D.DEPARTMENTNAME, S.SALARY,AverageSalaryForDep.AverageSALARY
FROM PERSON P
INNER JOIN DEPARTMENT D ON P.DEPARTMENTID = D.DEPARTMENTID
INNER JOIN SALARY S ON P.PERSONID = S.PERSONID
INNER JOIN (SELECT DEPARTMENTID, AVG(SALARY) AS AverageSALARY FROM SALARY ST
INNER JOIN PERSON PT ON PT.PERSONID = ST.PERSONID
GROUP BY DEPARTMENTID) as AverageSalaryForDep on AverageSalaryForDep.DEPARTMENTID = P.DEPARTMENTID;
Спасибо🙏 а то я начал мудрить что то типо такого
 
SELECT P.PERSONNAME, D.DEPARTMENTNAME, S.SALARY,
( SELECT AVG(SALARY) FROM SALARY )
AS AVGSALARY FROM PERSON P
LEFT OUTER JOIN DEPARTMENT D ON P.DEPARTMENTID = D.DEPARTMENTID
LEFT OUTER JOIN SALARY S ON P.PERSONID = S.PERSONID;
источник

AS

Arsen Sultanov in ru_mysql
еще не дописал
источник

M

Mb1W@ in ru_mysql
Можно и так, но мне мой вариант более знаком и там все равно будет подзапрос из двух таблиц.
Ибо в самой  SALARY у вас нет DEPARTMENTID.
источник

AS

Arsen Sultanov in ru_mysql
ааа точно
источник

AS

Arsen Sultanov in ru_mysql
ты делаешь еще один запрос по двум таблицам
источник

M

Mb1W@ in ru_mysql
но я бы ее добавил, если бы такие запросы ходили бы часто и выкинул бы не нужную таблицу из подзапроса.
источник

AS

Arsen Sultanov in ru_mysql
?
источник