數據分析入門之SQL演練

數據分析入門之SQL演練

world表

1 SELECT查詢語句

  • 顯示 Germany 的人口。

SELECT population FROM world WHERE name=Germany;

  • 查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示她的名字和人均國內生產總值(gdp/population)。

SELECT name,gdp/population FROM world WHERE area > 5000000;

  • 顯示「Ireland 愛爾蘭」,「Iceland 冰島」,「Denmark 單丹麥」的國家名稱和人口。

SELECT name,population FROM world WHERE name IN(Ireland,Iceland,Denmark);

  • 顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。

SELECT name,area FROM world WHERE area < 250000 AND area > 200000;

  • 找出以 Y 為開頭的國家。

SELECT name FROM world WHERE name LIKE Y%;

  • 找出以 Y 為結尾的國家。

SELECT name FROM world WHERE name LIKE %Y;

  • 找出所有國家,其名字包括字母x。

SELECT name FROM world WHERE name LIKE %x%;

  • 找出所有國家,其名字以 land 作結尾。

SELECT name FROM world WHERE name LIKE %land;

  • 找出所有國家,其名字以 C 作開頭,ia 作結尾。

SELECT name FROM world WHERE name LIKE c%ia;

  • 找出所有國家,其名字包括字母oo。

SELECT name FROM world WHERE name LIKE %oo%;

  • 找出所有國家,其名字包括三個或以上的a。

SELECT name FROM world WHERE name LIKE %a%a%a%;

  • 找出所有國家,其名字以t作第二個字母。

SELECT name FROM world WHERE name LIKE _t%ORDER BY name;

  • 找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔著。

SELECT name FROM world WHERE name LIKE %o__o%;

  • 找出所有國家,其名字都是 4 各字母的。

SELECT name FROM world WHERE name LIKE ____;

  • 顯示所有國家名字,其首都和國家名字是相同的。

SELECT name FROM world WHERE name LIKE capital;

  • 顯示所有國家名字,其首都是國家名字加上」City」。

SELECT name FROM world WHERE capital LIKE %city;

  • 找出所有首都和其國家名字,而首都要有國家名字中出現。

SELECT capital,nameFROM worldWHERE capital LIKE concat(%%,concat(name,%%))

concat的應用


  • 顯示具有至少2億人口的國家名稱。 2億是200000000,有八個零。

SELECT name FROM worldWHERE population>200000000

  • 找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。

SELECT name,gdp/populationFROM worldWHERE population > 200000000;

  • 顯示South America南美洲大陸的國家名字和以百萬為單位人口數。 將人口population 除以一百萬(1000000)得可得到以百萬為單位人口數。

SELECT name,population/1000000FROM worldWHERE continent = South America

  • 顯示法國,德國,義大利(France, Germany, Italy)的國家名稱和人口。

SELECT name,populationFROM worldWHERE name IN (France,Germany,Italy);

  • 顯示包含單詞「United」為名稱的國家。

SELECT nameFROM worldWHERE name LIKE %United%;

  • 成為大國的兩種方式:如果它有3百萬平方公里以上的面積,或擁有250百萬(2.5億)以上人口。

展示大國的名稱,人口和面積。

SELECT name,population,areaFROM worldWHERE area > 3000000 OR population > 250000000;

  • 美國、印度和中國(USA, India, China)是人口又大,同時面積又大的國家。排除這些國家。

顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。

/*SELECT name,population,areaFROM worldWHERE area > 3000000 OR population > 250000000;8*/

報錯

本題需要進一步學習和修改

參考答案

SELECT name,population,area FROM world WHERE (area>3000000 AND population<250000000) OR (area<3000000 AND population>250000000);

blog.csdn.net/bestallen

  • 除以為1000000(6個零)是以百萬計。除以1000000000(9個零)是以十億計。使用 ROUND 函數來顯示的數值到小數點後兩位。

對於南美顯示以百萬計人口,以十億計2位小數GDP。

SELECT name,round(population/1000000,2),round(gdp/1000000000,2)FROM worldWHERE continent = South America;

  • 顯示國家有至少一個萬億元國內生產總值(萬億,也就是12個零)的人均國內生產總值。四捨五入這個值到最接近1000。

顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。

SELECT name,round(gdp/population,-3)FROM worldWHERE gdp > 1000000000000;

以上更新於2018/6/5


nobel表

  • 更改查詢以顯示1950年諾貝爾獎的獎項資料。

SELECT yr, subject, winner FROM nobel WHERE yr = 1950

  • 顯示誰贏得了1962年文學獎(Literature)。

SELECT winner FROM nobel WHERE yr = 1962 AND subject = Literature

  • 顯示「愛因斯坦」(Albert Einstein) 的獲獎年份和獎項。

SELECT yr,subjectFROM nobelWHERE winner = Albert Einstein

  • 顯示2000年及以後的和平獎(『Peace』)得獎者。

SELECT winnerFROM nobelWHERE yr >= 2000AND subject =Peace

  • 顯示1980年至1989年(包含首尾)的文學獎(Literature)獲獎者所有細節(年,主題,獲獎者)。

SELECT *FROM nobelWHERE subject = Literature AND yr BETWEEN 1980 AND 1989

  • 顯示總統獲勝者的所有細節:

西奧多?羅斯福 Theodore Roosevelt

伍德羅?威爾遜 Woodrow Wilson

吉米?卡特 Jimmy Carter

SELECT * FROM nobel WHERE winner IN (Theodore Roosevelt, Woodrow Wilson, Jimmy Carter)

  • 顯示名字為John 的得獎者。 (注意:外國人名字(First name)在前,姓氏(Last name)在後)

SELECT winner FROM nobelWHERE winner LIKE concat( John,%%)

  • 顯示1980年物理學(physics)獲獎者,及1984年化學獎(chemistry)獲得者。

SELECT * FROM nobelWHERE (yr = 1980 AND subject = physics)OR (yr = 1984 AND subject = chemistry)

  • 查看1980年獲獎者,但不包括化學獎(Chemistry)和醫學獎(Medicine)。

SELECT * FROM nobelWHERE yr = 1980 AND subject NOT IN(Chemistry,Medicine)

  • 顯示早期的醫學獎(Medicine)得獎者(1910之前,不包括1910),及近年文學獎(Literature)得獎者(2004年以後,包括2004年)。

SELECT * FROM nobelWHERE (subject = Medicine AND yr < 1910)OR (subject = Literature AND yr >= 2004)

  • Find all details of the prize won by PETER GRüNBERG

SELECT * FROM nobelWHERE winner = Peter Grünberg

關於ü:ü - Wikipedia

  • 查找尤金?奧尼爾EUGENE ONEILL得獎的所有細節 Find all details of the prize won by EUGENE ONEILL

跳脫字元:單引號

你不能把一個單引號直接的放在字元串中。但您可連續使用兩個單引號在字元串中當作一個單引號。

SELECT * FROM nobelWHERE winner = Eugene ONeill

  • 騎士列隊 Knights in order

列出爵士的獲獎者、年份、獎頁(爵士的名字以Sir開始)。先顯示最新獲獎者,然後同年再按名稱順序排列。

SELECT winner,yr,subject FROM nobelWHERE winner LIKE Sir% ORDER BY yr DESC

  • The expression subject IN (Chemistry,Physics) can be used as a value - it will be 0 or 1.

Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.

SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject IN (Chemistry,Physics),subject ASC,winner ASC

解題思路

在ORDER BY 排序時,可以配合IF()或 IN()語句完成特殊排序

blog.csdn.net/bestallen

以上更新於2018/6/6


推薦閱讀:

0028數據展現:數據條、圖標與迷你圖的製作
做運營必須掌握的四個數據分析思維
7. 如何實現數據分析的價值
0026數據分析:數據透視
數據分析師分哪些方向

TAG:數據分析師 | SQL |