mirror of
https://github.com/ada-dmitry/DB.mephi_ada.git
synced 2026-09-24 08:00:16 +00:00
switch device
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
--2
|
||||
SELECT *
|
||||
FROM bd_departments
|
||||
WHERE LENGTH(street) = POWER(SQRT(75 + LENGTH(street)), 2) / 4;
|
||||
|
||||
INSERT INTO bd_departments VALUES
|
||||
(35,'meow', 407596, 'aaaaaaaaaaaaaaaaaaaaaaaaa', 2, 'MSK');
|
||||
--4
|
||||
CREATE TABLE employees_backup AS
|
||||
SELECT *,
|
||||
CASE
|
||||
WHEN random() < 0.5 THEN 'Active'
|
||||
ELSE 'Inactive'
|
||||
END AS employee_status
|
||||
FROM bd_employees;
|
||||
SELECT * FROM employees_backup;
|
||||
--5
|
||||
SELECT e.employee_id, e.first_name, e.last_name, e.manager_id
|
||||
FROM employees e
|
||||
JOIN employees m ON e.manager_id = m.employee_id
|
||||
WHERE LENGTH(m.last_name) > 6;
|
||||
|
||||
--3--
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
BEGIN
|
||||
RAISE NOTICE 'Шахматная доска:';
|
||||
CALL chess('z9', 'C');
|
||||
|
||||
|
||||
RAISE NOTICE 'Размещение фигуры А на клетке A5:';
|
||||
CALL chess('a5', ' A ');
|
||||
|
||||
|
||||
RAISE NOTICE 'Размещение фигуры У на клетке H4:';
|
||||
CALL chess('h4', ' Y ');
|
||||
|
||||
|
||||
END $$;
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE chess(pos varchar, bukva char) AS $$
|
||||
DECLARE
|
||||
board text;
|
||||
queen_col integer;
|
||||
queen_row integer;
|
||||
BEGIN
|
||||
queen_col := ascii(substring(pos from 1 for 1)) - 96;
|
||||
queen_row := substring(pos from 2)::integer;
|
||||
|
||||
FOR i IN 1..8 LOOP
|
||||
board := '';
|
||||
|
||||
FOR j IN 1..8 LOOP
|
||||
IF i = queen_row AND j = queen_col THEN
|
||||
board := board || bukva;
|
||||
ELSE
|
||||
IF (i + j) % 2 = 0 THEN
|
||||
board := board || ' б ';
|
||||
ELSE
|
||||
board := board || ' ч ';
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
RAISE NOTICE '%', board;
|
||||
END LOOP;
|
||||
END
|
||||
$$ LANGUAGE plpgsql;
|
||||
SELECT chess('c3');
|
||||
@@ -0,0 +1,32 @@
|
||||
DO $$
|
||||
DECLARE
|
||||
board CHAR(8)[][] := ARRAY[
|
||||
ARRAY['б', 'ч', 'б', 'ч', 'б', 'ч', 'б', 'ч'],
|
||||
ARRAY['ч', 'б', 'ч', 'б', 'ч', 'б', 'ч', 'б'],
|
||||
ARRAY['б', 'ч', 'б', 'ч', 'б', 'ч', 'б', 'ч'],
|
||||
ARRAY['ч', 'б', 'ч', 'б', 'ч', 'б', 'ч', 'б'],
|
||||
ARRAY['б', 'ч', 'б', 'ч', 'б', 'ч', 'б', 'ч'],
|
||||
ARRAY['ч', 'б', 'ч', 'б', 'ч', 'б', 'ч', 'б'],
|
||||
ARRAY['б', 'ч', 'б', 'ч', 'б', 'ч', 'б', 'ч'],
|
||||
ARRAY['ч', 'б', 'ч', 'б', 'ч', 'б', 'ч', 'б']
|
||||
];
|
||||
|
||||
BEGIN
|
||||
RAISE NOTICE 'Шахматная доска:';
|
||||
FOR i IN REVERSE 1..8 LOOP
|
||||
RAISE NOTICE '%', board[i];
|
||||
END LOOP;
|
||||
|
||||
RAISE NOTICE 'Размещение фигуры А на клетке A5:';
|
||||
board[8 - 5 + 1][ASCII('A') - 64] := 'A';
|
||||
FOR i IN REVERSE 1..8 LOOP
|
||||
RAISE NOTICE '%', board[i];
|
||||
END LOOP;
|
||||
|
||||
RAISE NOTICE 'Размещение фигуры У на клетке H4:';
|
||||
board[8 - ч + 1][ASCII('H') - 64] := 'У';
|
||||
FOR i IN REVERSE 1..8 LOOP
|
||||
RAISE NOTICE '%', board[i];
|
||||
END LOOP;
|
||||
|
||||
END $$;
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
INSERT INTO A VALUES
|
||||
(1,2),
|
||||
(2,3);
|
||||
|
||||
INSERT INTO B VALUES
|
||||
(1,1),
|
||||
(2,3);
|
||||
|
||||
INSERT INTO C VALUES
|
||||
(1,2,1,1),
|
||||
(1,2,2,2),
|
||||
(2,3,1,1),
|
||||
(1,2,4,5);
|
||||
|
||||
|
||||
SELECT a.F1, a.F2 FROM a,b,c
|
||||
WHERE a.F1 = c.F1 AND a.F2 = c.F2 AND b.F3 = c.F3 AND b.F4 = c.F4
|
||||
GROUP BY a.F1, a.F2 HAVING COUNT (a.F1) = (SELECT COUNT(F3) FROM b);
|
||||
|
||||
SELECT F1, F2 FROM C
|
||||
WHERE F3 IN (SELECT F3 FROM B) AND F4 IN (SELECT F4 FROM B)
|
||||
GROUP BY F1, F2 HAVING COUNT(*) = (
|
||||
SELECT COUNT(*) FROM b
|
||||
);
|
||||
Reference in New Issue
Block a user