落書きノート

ふと自分が気になった事を書いてます

PostgreSQLで問題を解く

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

-- q3-3-1
sukkiri=> select * from 成績表;
 学籍番号 |   学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+------------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | 
(3 rows)

-- q3-3-2
sukkiri=> insert into 成績表 values ('S001','織田信長','77','55','80','75','93');
sukkiri=> insert into 成績表 values('A002','豊臣秀吉','64','69','70','0','59');
sukkiri=> insert into 成績表 values ('E003','徳川家康','80','83','85','90','79');
INSERT 0 1
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | 
 S001     | 織田信長  |   77 |     55 |   80 |       75 |     93 | 
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     59 | 
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     79 | 
(6 rows)

-- q3-3-3
sukkiri=> update 成績表 set 法学 = '85',哲学 = '67' where 学籍番号 = 'S001';UPDATE 1
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | 
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     59 | 
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     79 | 
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | 
(6 rows)

-- q3-3-4
sukkiri=> update 成績表 set 外国語 = '81' where 学籍番号 = 'A002' or 学籍番号 = 'E003';
UPDATE 2
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | 
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | 
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     81 | 
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     81 | 
(6 rows)

-- q3-3-5-1
sukkiri=> update 成績表 set 総合成績 = 'A' where 法学 >= 80 and 経済学 >= 80 and 哲学 >= 80 and 情報理論 >= 80 and 外国語 >= 80;
UPDATE 1
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | 
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | 
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     81 | 
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     81 | A
(6 rows)

-- q3-3-5-2
sukkiri=> update 成績表 set 総合成績 = 'B' where (法学 >= 80 or 外国語 >= 80) and (経済学 = 80 or 哲学 >= 80 )and 総合成績 is null;
UPDATE 0
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | 
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | 
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     81 | 
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | B
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | B
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     81 | A
(6 rows)

-- q3-3-5-3
sukkiri=> update 成績表 set 総合成績 = 'D' where 法学 < 50 and 経済学 < 50 and  哲学 < 50 and 情報理論 < 50 and 外国語 < 50 and 総合成績 is null;
UPDATE 0

-- q3-3-5-4
sukkiri=> update 成績表 set 総合成績 = 'C' where 総合成績 is null;
UPDATE 3
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | B
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | B
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     81 | A
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | C
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | C
 A002     | 豊臣秀吉  |   64 |     69 |   70 |        0 |     81 | C
(6 rows)

-- q3-3-6
sukkiri=> delete from 成績表 where 法学 = 0 or 経済学 = 0 or 哲学 = 0 or 情報理論 = 0 or 外国語 = 0;
DELETE 1
sukkiri=> select * from 成績表;
 学籍番号 |  学生名   | 法学 | 経済学 | 哲学 | 情報理論 | 外国語 | 総合成績 
----------+-----------+------+--------+------+----------+--------+----------
 E004     | 徳川 家康 |   90 |     80 |   70 |       60 |     50 | B
 S001     | 織田信長  |   85 |     55 |   67 |       75 |     93 | B
 E003     | 徳川家康  |   80 |     83 |   85 |       90 |     81 | A
 S002     | 織田 信長 |   50 |     60 |   70 |       80 |     90 | C
 A001     | 豊臣 秀吉 |   45 |     55 |   65 |       75 |     85 | C
(5 rows)