SQL練習(一)
說明:最近面試,深感sql方面需要強化訓練。恰巧,在機緣巧合的情況下(忘記是怎麼加入的),一個mysql訓練營,每天會釋出一定的任務,看起來還不錯的樣子。那,就一起參加一波呗。
任務與解答
項目一:查找重複的電子郵箱(難度:簡單)
建立 email表,并插入如下三行資料
+----+---------+
| Id | Email |
+----+---------+
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
+----+---------+
編寫一個 SQL 查詢,查找 email 表中所有重複的電子郵箱。
根據以上輸入,你的查詢應傳回以下結果:
+---------+
| Email |
+---------+
| [email protected] |
+---------+
說明:所有電子郵箱都是小寫字母。
答案:
建表:
CREATE TABLE email(id INT PRIMARY KEY,Email VARCHAR(20));
插入資料:
INSERT INTO email(id,Email) VALUES(1,'[email protected]'),(2,'[email protected]'),(3,'[email protected]');
查找:重複的電子郵箱
SELECT Email FROM email GROUP BY Email HAVING COUNT(id)>1;
項目二:查找大國(難度:簡單)
建立如下 World 表
+------------+----------+---------+--------------+---------------+
| name | continent| area | population | gdp |
+------------+----------+---------+--------------+---------------+
| Afghanistan| Asia | 652230 | 25500100 | 20343000 |
| Albania | Europe | 28748 | 2831741 | 12960000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000 |
| Andorra | Europe | 468 | 78115 | 3712000 |
| Angola | Africa | 1246700 | 20609294 | 100990000 |
+------------+----------+---------+--------------+---------------+
如果一個國家的面積超過300萬平方公裡,或者(人口超過2500萬并且gdp超過2000萬),那麼這個國家就是大國家。
編寫一個SQL查詢,輸出表中所有大國家的名稱、人口和面積。
例如,根據上表,我們應該輸出:
+--------------+-------------+--------------+
| name | population | area |
+--------------+-------------+--------------+
| Afghanistan | 25500100 | 652230 |
| Algeria | 37100000 | 2381741 |
+--------------+-------------+--------------+
解答
建表:
CREATE TABLE world(NAME VARCHAR(20),continent VARCHAR(20), AREA INT ,population INT,gdp INT );
插入資料:
INSERT INTO World
VALUES('Afghanistan','Asia',652230,25500100,20343000),
('Albania','Europe',28748,2831741,12960000),
('Algeria','Africa',2381741,37100000,188681000),
('Andorra','Europe',468,78115,3712000),
('Angola','Africa',1246700,20609294,100990000);
查詢:
SELECT NAME,population,AREA FROM world WHERE AREA>3000000 OR (population>25000000 AND gdp>20000000);