1積和演算
テーブルの構造は次のとおりです。
要求する
スコアを知り、最悪のランキングを見つけます。結果はグレードの昇順で並べ替えられます。
SQLステートメント:
select grade, sum(number) over(order by grade) as t_rank
from class_grade
order by grade;
いくつかのかもしれないのMySQLバージョン不支持over()函数
、8.0
単なるサポート以上。
2ビューを作成します
テーブルの構造は次のとおりです。
要求する
作成され视图actor_name_view
、2つだけfirst_name
を含みlast_name
、2つの列の名前first_name
がfirst_name_v
、にlast_name
変更され、に変更されましたlast_name_v
。
SQLステートメント
create view actor_name_view as
select first_name as first_name_v, last_name as last_name_v from actor;
運転結果
3正しい接続
テーブルの構造は次のとおりです。
要求する
すべての部門の従業員が割り当てられていることlast_name
を確認first_name
します。またdept_no
、臨時スタッフを含め、セクター固有の割り当てではありません。
SQLステートメント
select e.last_name, e.first_name, d.dept_no from dept_emp as d
right join employees as e
on d.emp_no = e.emp_no;
# select e.last_name, e.first_name, d.dept_no from employees as e
# left join dept_emp as d
# on e.emp_no = d.emp_no;
このタイプの質問左连接
は右连接
、正しい結果を得るために使用できます。
運転結果
4左のクエリ、追加の条件
テーブルの構造は次のとおりです。
要求する
照会する分类为null
ムービーid
はで始まり及名称
ます。
SQLステートメント
select f.film_id, f.title from film as f
left join film_category as fc
on f.film_id = fc.film_id
where category_id is NULL;
分析では、3つのテーブルの共同クエリはより複雑です。上記のステートメントは、2つの部分に分けることができます。
select f.film_id, f.title from film as f
left join film_category as fc
on f.film_id = fc.film_id;
この部分の実行結果は
、条件を使用して目的のレコードを除外します。
もちろん、join
ステートメントを使用せずにサブクエリを直接使用することもできます
select film_id, title from film
where film_id not in (select film_id from film_category);
それは私が記録した別の問題と比較することができます。
5つのexists
キーワード
テーブルの構造は次のとおりです。
要求する
特定の部門に割り当てられていない従業員のすべての情報を検索します
SQLステートメント
select * from employees
where not exists (select emp_no from dept_emp where employees.emp_no = dept_emp.emp_no);
もちろん、not in
代わりに使用することもできます
select * from employees where emp_no
not in (select emp_no from dept_emp);