select * from employees
where hire_date =
(select max(hire_date) from employees)
select * from employees
where hire_date=(select hire_date from employees order by hire_date desc limit 2,1)
select s.*,d.dept_no from salaries s,dept_manager d
where s.to_date='9999-01-01'
and d.to_date='9999-01-01'
and s.emp_no=d.emp_no
select employees.last_name,employees.first_name,dept_emp.dept_no from dept_emp inner join employees
where dept_emp.emp_no=employees.emp_no
select employees.last_name,employees.first_name,dept_emp.dept_no from employees
left join dept_emp on dept_emp.emp_no=employees.emp_no
select e.emp_no,s.salary from salaries as s inner join employees as e
on e.emp_no=s.emp_no where e.hire_date=s.from_date
order by e.emp_no desc
select emp_no,count(emp_no)as t from salaries group by emp_no having t>15
select distinct salary from salaries where to_date='9999-01-01' order by salary desc
select d.dept_no,d.emp_no,s.salary from salaries s inner join dept_manager d
on d.emp_no=s.emp_no where d.to_date='9999-01-01'and s.to_date='9999-01-01'
select emp_no from (select * from employees left join dept_manager on employees.emp_no=dept_manager.emp_no)
where dept_no is null
select de.emp_no,dm.emp_no as manager_no from dept_emp as de inner join dept_manager as dm
on de.dept_no=dm.dept_no
where de.to_date='9999-01-01' and dm.to_date='9999-01-01' and de.emp_no!=dm.emp_no
select d.dept_no,d.emp_no,max(s.salary) as salary
from dept_emp as d inner join salaries as s
on d.emp_no=s.emp_no
where d.to_date='9999-01-01' and s.to_date='9999-01-01'
group by dept_no
select title,count(title)as t from titles group by title having t>=2
select title,count(distinct emp_no)as t from titles group by title having t>=2
select * from employees where emp_no%2=1 and last_name!='Mary'
order by hire_date desc
SELECT t.title as title, AVG(salary) AS avg
FROM titles AS t
INNER JOIN salaries AS s
ON s.emp_no = t.emp_no AND s.to_date = '9999-01-01' AND t.to_date = '9999-01-01'
GROUP BY t.title
select emp_no,salary from salaries where to_date='9999-01-01'
and salary=(select salary from salaries order by salary desc limit 1,1)
select e.emp_no,s.salary,e.last_name,e.first_name from employees as e inner join salaries as s
on e.emp_no=s.emp_no
where s.to_date='9999-01-01'
and salary=(select max(salary) from salaries where salary < (select max(salary) from salaries))
select e.last_name,e.first_name,dm.dept_name from
(employees as e left join dept_emp as de on e.emp_no=de.emp_no)
left join departments as dm on dm.dept_no=de.dept_no
select (
(select salary from salaries where emp_no=10001 order by to_date desc limit 1)
-(select salary from salaries where emp_no=10001 order by to_date limit 1)
) as growth
select a.emp_no,(b.salary-c.salary)as growth
from employees as a inner join salaries as b
on a.emp_no=b.emp_no and b.to_date='9999-01-01'
inner join salaries as c
on a.emp_no=c.emp_no and a.hire_date=c.from_date
order by growth
select de.dept_no,dm.dept_name,count(s.salary)as sum
from(dept_emp as de inner join salaries as s on s.emp_no=de.emp_no)
inner join departments dm on dm.dept_no=de.dept_no
group by de.dept_no
select s1.emp_no,s1.salary,count(distinct s2.salary)as rank
from salaries s1,salaries s2
where s1.to_date='9999-01-01'and s2.to_date='9999-01-01' and s1.salary <= s2.salary
group by s1.emp_no
order by s1.salary desc,s1.emp_no asc
SELECT de.dept_no, s.emp_no, s.salary
FROM (employees AS e INNER JOIN salaries AS s ON s.emp_no = e.emp_no AND s.to_date = '9999-01-01')
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.emp_no NOT IN (SELECT emp_no FROM dept_manager)
select de.demp_no,s.emp_no,s.salary
from(employees as e inner join salaries as s on s.emp_no=e.emp_no and
s.to_date='9999-01-01')inner join dept_emp as de on e.emp_no=de.emp_no
where de.emp_no not in (select emp_no from dept_manager)
SELECT sem.emp_no AS emp_no, sdm.emp_no AS manager_no, sem.salary AS emp_salary, sdm.salary AS manager_salary
FROM (SELECT s.salary, s.emp_no, de.dept_no FROM salaries s INNER JOIN dept_emp de
ON s.emp_no = de.emp_no AND s.to_date = '9999-01-01' ) AS sem,
(SELECT s.salary, s.emp_no, dm.dept_no FROM salaries s INNER JOIN dept_manager dm
ON s.emp_no = dm.emp_no AND s.to_date = '9999-01-01' ) AS sdm
WHERE sem.dept_no = sdm.dept_no AND sem.salary > sdm.salary
select sem.emp_no as emp_no,sdm.emp_no as manager_no,sem.salary as emp_salary,
sdm.salary as manager_salary
from(select s.salary,s.emp_no,de.dept_no from salarier s inner join demp_emp de
on s.emp_no=de.emp_no and s.to_date='9999-01-01')as sem,
(select s.salary,s.emp_no,dm.dept_no from salaries s inner join dept_manager dm
on s.emp_no=dm.emp_no and s.to_date='9999-01-01')as sdm
where dem.dept_no=sdm.dept_no and sem.salary>sdm.salary
SELECT s2.emp_no, s2.from_date, (s2.salary - s1.salary) AS salary_growth
FROM salaries AS s1, salaries AS s2
WHERE s1.emp_no = s2.emp_no
AND salary_growth > 5000
AND (strftime("%Y",s2.to_date) - strftime("%Y",s1.to_date) = 1
OR strftime("%Y",s2.from_date) - strftime("%Y",s1.from_date) = 1 )
ORDER BY salary_growth DESC
select s2.emp_no,s2.from_date,(s2.salaty-s1.salary)as salaty_growth
from salaties as s1,salaries as s2
where s1.emp_no=s2.emp_no
and salary_growth>5000
and(strftime('%Y',s2.to_date)-strftime("%Y",s1.to_date)=1
or strftime("%Y",s2.from_date)-strftime("%Y",s1.from_date)=1
order by salary_growth desc
explain select * from employees
explain select *from employees
select last_name ||" "||first_name as name from employees
select lase_name ||" "||first_name as name from employees
create table if not exists actor(
actor_id smallint(5) not null,
first_name varchar(45) not null,
last_name varchar(45) not null,
last_update timestamp not null default( datetime('now','localtime')),
primary key(actor_id)
)
create table if not exists actor(
actor_id smallint(5) not null,
first_name varchar(45) not null,
last_name varchar(45) not null,
last_update timestamp not null default(datetime('now','localtime')),
primary key(actor_id)
)
INSERT INTO actor
VALUES (1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33')
insert into actor
value(
1,'penelope','guiness','2006-02-15 12:34:33'
),
(2,'nick','wahlaberg','2006-02-15 12:34:33')
INSERT INTO actor
VALUES (1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33')
insert into actor
value(
1,'penelope','guiness','2006-02-15 12:34:33'
),
(2,'nick','wahlaberg','2006-02-15 12:34:33')
insert or ignore into actor values(3,'ed','chase','2006-02-15 12:34:33')
create table if not exists actor_name(
first_name varchar(45) not null,
last_name varchar(45) not null
);
insert into actor_name select first_name,last_name from actor
create unique index uniq_idx_firstname on actor(first_name);
create index idx_lastname on actor(last_name);
create unique index uniq_idx_firstname on actor(first_nname);
create index idx_lastname on actor(last_name);
CREATE VIEW actor_name_view (fist_name_v,last_name_v)AS
SELECT first_name,last_name
FROM actor
create view actor_name_view (first_name_v,last_name_v)as select first_name,last_name
from actor
select * from salaries indexed by idx_emp_no where emp_no=10005
select* from salaries indexed by idx_emp_no where emp_no=10005
alter table actor add column create_date datetime NOT null
default '0000-00-00 00:00:00'
alter table actor add column create_date datetime not null
default '0000-00-00 00:00:00'
create trigger audit_log after insert on employees_test
begin
insert into audit values(new.ID,new.NAME);
end
create trigger audit_log after insert on employees_test
begin
insert into audit values(new.ID,new.NAME);
end
delete from titles_test where id not in(select min(id)
from titles_test group by emp_no)
delete from titles_test where id not in (select min(id)
from titles_test group by emp_no)
update titles_test set to_date=null,from_date='2001-01-01'
where to_date="9999-01-01"
update titles_test set to_date=null,from_date='2001-01-01'
where to_date='9999-01-01'
update titles_test set emp_no=replace(emp_no,'10001','10005') where id=5
upate titles_test set emp_no=replace(emp_no,'10001','10005')where id=5
alter table titles_test rename to titles_2017
alter table titlles_test rename to titles_2017
DROP TABLE audit;
CREATE TABLE audit(
EMP_no INT NOT NULL,
create_date datetime NOT NULL,
FOREIGN KEY(EMP_no) REFERENCES employees_test(ID));
drop table audit;
create table audit(
emp_no int not null
create_date datetime not null,
foreign key(emp_no) references employees_test(ID);
)
select em.* from employees as em,emp_v as ev where ev.emp_no=em.emp_no
SELECT em.*from employees as em,emp_v as ev where ev.emp_no=em.emp_no
UPDATE salaries SET salary = salary * 1.1 WHERE emp_no IN
(SELECT s.emp_no FROM salaries AS s INNER JOIN emp_bonus AS eb
ON s.emp_no = eb.emp_no AND s.to_date = '9999-01-01')
update salaries set salary=salary*1.1 where emp_no in
(select s.emp_no from salaries as s inner join emp_bonus as eb
on s.emp_no=eb.emp_no and s.to_date='9999-01-01')
select "select count(*) from "||name||";" as cnts from sqlite_master
where type='table'
select 'select count(*) from '||name||";"as cnts from sqlite_master
where type='table'
select last_name||"'"||first_name as name
from employees
select last_name||"'"||first_name as name
from employees
select length("10,A,B")-length(replace("10,A,B",",","")) as cnt
select length("10,A,B")-length(replace("10,A,B",",","")) as cnt
select first_name from employees
order by substr(first_name,length(first_name)-1)
select first_name from employees
order by substr(first_name,length(first_name)-1)
select dept_no,group_concat(emp_no)as employees
from dept_emp group by dept_no
select dept_no,group_councat(emp_no)as employees
from dept_emp group by dept_no
SELECT AVG(salary) AS avg_salary FROM salaries
WHERE to_date = '9999-01-01'
AND salary NOT IN (SELECT MAX(salary) FROM salaries)
AND salary NOT IN (SELECT MIN(salary) FROM salaries)
select avg(salary)as avg_salary from salaries
where to_date='9999-01-01'
and salary not in (select max(salary)from salaries)
and salary not in (select min(salary)from salaries)
select * from employees limit 5,5
select *from employees limit 5,5
SELECT de.emp_no, de.dept_no, eb.btype, eb.recevied
FROM dept_emp AS de LEFT JOIN emp_bonus AS eb
ON de.emp_no = eb.emp_no
select de.emp_no,de.dept_no,eb.btype,eb.recevied
from dept_emp as de left join emp_bonus as eb
on de.emp_no=eb.emp_no
select e.* from employees as e
where not exists (select emp_no from dept_emp where dept_emp.emp_no=e.emp_no)
select e.* from employees as e
where not exists (select emp_no from dept_emp where dept_emp.emp_no=e.emp_no)
select em.* from employees as em,emp_v as ep where em.emp_no=ep.emp_no
select em.* from employees as em,emp_v as ep where em.emp_no=ep.emp_no
select e.emp_no,e.first_name,e.last_name,b.btype,s.salary,
(case b.btype
when 1 then s.salary*0.1
when 2 then s.salary*0.2
else s.salary*0.3 end)as bonus
from employees as e inner join salaries as s on s.emp_no=e.emp_no
inner join emp_bonus as b on s.emp_no=b.emp_no
where s.to_date='9999-01-01'
select e.emp_no,e.first_name,e.last_name,b.btyoe,s.salary,(
case b.btype
when 1 then s.salary*0.1
when 2 then s.salary*0.2
else s.salary*0.3 end)as bus
from employees as e inner join salaries as s on s.emp_no=e.emp_no
inner join emp_bonus as b on s.enp_no=b.emp_no
where s.to_date-'9999-01-01'
select s1.emp_no,s1.salary,(select sum(s2.salary)
from salaries as s2 where s2.emp_no<=s1.emp_no and s2.to_date='9999-01-01')
as running_total
from salaries as s1
where s1.to_date='9999-01-01'
select s1.emp_no,s1.salary,(select sum(s2.salary)
from salaries as se where s2.emp_no<=s1.emp_noand s2.to_date='9999-01-01')
as running_total
from salaries as s1
where s1.to_date='9999-01-01'
select e1.first_name from employees as e1
where (select count(e2.first_name)from employees as e2
where e2.first_name<=e1.first_name)%2=1
select e1.first_name feom employees as e1
where (select count(e2.first_name)from employees as e2
where e2.first_name<=e1.first_name)%2=1
study Python 19day
猜你喜欢
转载自blog.csdn.net/u011624267/article/details/103865665
今日推荐
周排行