Комментарии (12)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
Уровень 51
17 ноября 2022, 01:14
-- уникальные DISTINCT значения в поле salary -- SELECT DISTINCT SALARY FROM EMPLOYEE -- SELECT * FROM EMPLOYEE WHERE DEPARTMENT_ID = 3 -- SELECT * FROM EMPLOYEE WHERE SALARY <= 80000 -- SELECT * FROM EMPLOYEE WHERE NAME = 'Смирнова О.П.' -- SELECT * FROM EMPLOYEE WHERE SALARY <= 80000 LIMIT 3 -- SELECT * FROM EMPLOYEE LIMIT 3 -- SELECT ID AS 'Qwe', NAME AS 'Имя' FROM EMPLOYEE -- SELECT * FROM EMPLOYEE ORDER BY SALARY -- SELECT * FROM EMPLOYEE ORDER BY SALARY DESC -- SELECT * FROM EMPLOYEE WHERE NAME LIKE '%мой%' -- SELECT * FROM EMPLOYEE WHERE SALARY LIKE '9%' -- SELECT * FROM EMPLOYEE WHERE ID > 5 AND SALARY < 80000 -- SELECT * FROM EMPLOYEE WHERE ID > 5 OR SALARY > 90000 -- SELECT * FROM EMPLOYEE WHERE NOT ID = 5 -- SELECT * FROM EMPLOYEE WHERE SALARY BETWEEN 70000 AND 100000 -- SELECT * FROM EMPLOYEE e INNER JOIN DEPARTMENT d ON e.DEPARTMENT_ID = d.ID -- SELECT * FROM DEPARTMENT d JOIN EMPLOYEE e ON e.DEPARTMENT_ID = d.ID -- SELECT d.NAME, e.NAME, e.SALARY FROM EMPLOYEE e INNER JOIN DEPARTMENT d ON e.DEPARTMENT_ID = d.ID WHERE e.SALARY < 80000 -- SELECT d.NAME, e.NAME, e.SALARY FROM DEPARTMENT d INNER JOIN EMPLOYEE e ON e.DEPARTMENT_ID = d.ID WHERE e.SALARY < 80000 -- SELECT * FROM DEPARTMENT d LEFT OUTER JOIN EMPLOYEE e ON e.DEPARTMENT_ID = d.ID -- SELECT * FROM DEPARTMENT d LEFT OUTER JOIN EMPLOYEE e ON e.DEPARTMENT_ID = d.ID -- SELECT d.NAME, e.NAME, e.SALARY FROM EMPLOYEE e LEFT OUTER JOIN DEPARTMENT d ON e.DEPARTMENT_ID = d.ID WHERE e.SALARY < 80000 -- SELECT d.NAME, e.NAME, e.SALARY FROM EMPLOYEE e RIGHT OUTER JOIN DEPARTMENT d ON e.DEPARTMENT_ID = d.ID WHERE e.SALARY < 80000 -- SELECT d.ID, d.NAME, d.ID FROM DEPARTMENT d UNION SELECT e.ID, e.NAME, e.SALARY FROM EMPLOYEE e -- SELECT AVG(e.SALARY) FROM EMPLOYEE e -- SELECT MIN(e.SALARY) FROM EMPLOYEE e -- SELECT MAX(e.SALARY) FROM EMPLOYEE e -- SELECT MIN(e.SALARY), MAX(e.SALARY) FROM EMPLOYEE e -- SELECT SUM(e.SALARY) FROM EMPLOYEE e
Павел
Уровень 51
17 ноября 2022, 01:14
-- SELECT e.CHIEF_ID, COUNT(e.CHIEF_ID) FROM EMPLOYEE e GROUP BY e.CHIEF_ID -- 1. Вывести список сотрудников, получающих заработную плату большую чем у непосредственного руководителя -- SELECT * FROM EMPLOYEE e WHERE e.CHIEF_ID != 1 AND e.SALARY > (SELECT MAX(e.SALARY) FROM EMPLOYEE e WHERE e.CHIEF_ID = 1) -- 2. Вывести список сотрудников, получающих максимальную заработную плату в своем отделе -- SELECT e.NAME, e.SALARY FROM EMPLOYEE e WHERE e.SALARY = (SELECT MAX(e2.SALARY) FROM EMPLOYEE e2 WHERE e.DEPARTMENT_ID = e2.DEPARTMENT_ID) -- 3. Вывести список ID отделов, количество сотрудников в которых меньше 4 человек -- не превышает 3 человек -- SELECT *, COUNT(e.DEPARTMENT_ID) FROM EMPLOYEE e GROUP BY e.DEPARTMENT_ID HAVING COUNT(e.DEPARTMENT_ID) < 4 -- 4. Вывести список сотрудников, не имеющих назначенного руководителя, работающего в том-же отделе -- SELECT * FROM EMPLOYEE e WHERE e.CHIEF_ID IS NULL -- select a.* -- from EMPLOYEE a -- left join EMPLOYEE b on (b.id = a.chief_id and b.department_id = a.department_id) -- where b.id is null -- select * from EMPLOYEE e1 where not exists(select null from EMPLOYEE e2 where e1.chief_id = e2.id and e1.department_id=e2.department_id) -- select * from EMPLOYEE a1 where a1.chief_id is null and exists (select id from EMPLOYEE where department_id=a1.department_id and chief_id is not null); -- select * from EMPLOYEE a1 -- where a1.chief_id is null -- or a1.chief_id not in (select id from EMPLOYEE where department_id=a1.department_id); -- 5. Найти список ID отделов с максимальной суммарной зарплатой сотрудников -- SELECT *, SUM(e.SALARY) FROM EMPLOYEE e GROUP BY e.DEPARTMENT_ID -- SELECT *, SUM(e.SALARY) AS s FROM EMPLOYEE e GROUP BY e.DEPARTMENT_ID ORDER BY s DESC LIMIT 1
Павел
Уровень 51
17 ноября 2022, 01:14
-- CREATE TABLE `SQL`.Planets ( -- ID int, -- -- ID_2 int, -- PlanetName varchar(10), -- PRIMARY KEY (ID) -- -- ,FOREIGN KEY (ID_2) REFERENCES `SQL`.DEPARTMENT (ID) -- ) -- INSERT INTO `SQL`.Planets (ID) -- VALUES (66) -- DELETE FROM `SQL`.Planets -- TRUNCATE TABLE `SQL`.Planets -- CREATE TABLE `SQL`.Authors ( -- AuthorID int NOT NULL PRIMARY KEY, -- AuthorName varchar(50) -- ) -- CREATE TABLE `SQL`.Books ( -- BookID int, -- BookName varchar(100), -- FOREIGN KEY (BookID) REFERENCES `SQL`.Authors(AuthorID) -- )
Павел
Уровень 51
31 мая 2022, 03:29
Павел
Уровень 51
15 сентября 2021, 09:50
Павел
Уровень 51
7 сентября 2021, 10:38
Павел
Уровень 51
25 апреля 2021, 11:27
Статические vs Обычные методы
Павел
Уровень 51
25 апреля 2021, 11:19
Павел
Уровень 51
23 апреля 2021, 22:20
"Передача по ссылке"
public class Main {
    public static void main(String[] args) {
        ClassA classA = new ClassA();
        ClassB classB = new ClassB(0);

        System.out.println("Main:\t hashCode(classB)\t   = " + classB.hashCode());

        System.out.println("Main:\t a = " + classB.a);
        classA.up(classB);
        System.out.println("Main:\t up a = " + classB.a);
        classA.down(classB);
        System.out.println("Main:\t down a = " + classB.a);
    }

    public static class ClassA {
        public void up(ClassB classB) {
//создаем новый объект и работаем с ним по коду ниже, в рамках текущего метода.
            classB = new ClassB(0);
            System.out.println("ClassA:\t up hashCode(classB)   = " + classB.hashCode());
            classB.a++;
            System.out.println("ClassA:\t up a = " + classB.a);
        }

        public void down(ClassB classB) {
            System.out.println("ClassA:\t down hashCode(classB) = " + classB.hashCode());
            classB.a--;
            System.out.println("ClassA:\t down a = " + classB.a);
        }
    }

    public static class ClassB{
        public int a;

        public ClassB(int a) {
            this.a = a;
        }
    }
}
Вывод в консоль:
Main:	 hashCode(classB)	   = 460141958
Main:	 a = 0
ClassA:	 up hashCode(classB)   = 1163157884
ClassA:	 up a = 1
Main:	 up a = 0
ClassA:	 down hashCode(classB) = 460141958
ClassA:	 down a = -1
Main:	 down a = -1
В метод передается ссылка на объект classB со значением 0 переменной а. Поэтому когда внутри методов мы меняем объект classB.a++, мы обращаемся к той самой области памяти, где хранится наш объект. Объекты передаются в методы по ссылке. Копии объектов никогда не создаются автоматически. Но значения переменных-ссылок копируются при присваивании и/или вызове методов!
Павел
Уровень 51
23 апреля 2021, 21:55
"Передача по значению" Поведение примитивной переменной при передачи в качестве аргумента метода:
public class Main {
    public static void main(String[] args) {
        ClassA classA = new ClassA();
        int i = 0;
        System.out.println("Main:\t i = " + i);
        classA.up(i);
        System.out.println("Main:\t up i = " + i);
        classA.down(i);
        System.out.println("Main:\t down i = " + i);
    }

    public static class ClassA {
        public void up(int i) {
            i = 0;
            i++;
            System.out.println("ClassA:\t up i = " + i);
        }

        public void down(int i) {
            i--;
            System.out.println("ClassA:\t down i = " + i);
        }
    }
}
Вывод в консоль:
Main:	 i = 0
ClassA:	 up i = 1
Main:	 up i = 0
ClassA:	 down i = -1
Main:	 down i = 0
Переменная i, которая была передана в методы up() и down(), является лишь копией i. И изменение копии никак не повлияло на значение "оригинала". Источник: Методы, их параметры, взаимодействие и перегрузка