从表中编写查询的问题

时间:2014-10-12 22:07:15

标签: sql postgresql

我正在尝试为家庭作业写一个查询,但有一个查询特别是我遇到了麻烦。我遇到麻烦的那个人应该得到各种形式的政府 从一张桌子,然后得到有多少国家有这种形式的政府的计数。 我明白我必须使用count函数,但我不明白我会怎么做 每次提到政府时加1。而且,独立年的事也让我感到困惑。以下是查询的确切定义

  

生成所有政府形式的清单,数量为多少   国家有这种形式的政府。另外,列出最新的   任何一个国家独立于这种形式的年份   政府。应通过减少计数来排序结果。

这是我尝试的代码,以及我尝试的表

SELECT government_form, COUNT(government_form) AS count, indep_year 
FROM what.country
ORDER BY count DESC 

以下是我正在使用的表格

               Table "what.country"
     Column      |         Type          |               Modifiers              
-----------------+-----------------------+--------------------------------------
 country_code    | character(3)          | not null default ''::bpchar
 name            | character varying(52) | not null default ''::character varying
 continent       | continent             | not null
 region          | character varying(26) | not null default ''::character varying
 surface_area    | real                  | not null default 0::real
 indep_year      | smallint              | 
 population      | integer               | not null default 0
 life_expectancy | real                  | 
 gnp             | real                  | 
 gnp_old         | real                  | 
 local_name      | character varying(45) | not null default ''::character varying
 government_form | character varying(45) | not null default ''::character varying

1 个答案:

答案 0 :(得分:2)

  

生成所有政府形式的清单,数量为多少   国家有这种形式的政府。另外,列出最新的   任何一个国家独立于这种形式的年份   政府。应通过减少计数来排序结果。

首先让我们理解部分问题

  

计算有多少国家拥有这种政府形式

表示我们需要GROUP BY government_form,然后在COUNT上应用countries

  

最近一年,任何国家都以这种形式独立   政府

表示我们需要在MAX

分组后找到indep_year government_form

因此查询是

SELECT government_form, COUNT(countries) AS count, MAX(indep_year)
FROM what.country
GROUP BY government_form
ORDER BY count DESC