欢迎来到天天文库
浏览记录
ID:33999309
大小:44.71 KB
页数:3页
时间:2019-03-03
《postgresql之聚集函数》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、聚集函数和大多数其他数据库一样,postgresql支持聚集函数,一个聚集函数从多个输入行中计算出一个结果。比如,我们有在一个行集合上计算count(数目),sum(和),avg(均值),max(最大值)和min(最小值)的函数。比如,我们可以用下面的语句找出所有记录中中低温中的最高温度:SELECTmax(temp_lo)FROMweather;max-----46(1row)如果我们想知道该读数发生在哪个城市,我们可以用SELECTcityFROMweatherWHEREtemp_lo=max(temp_lo);WRONG不过这个方法不能运转,因为聚集max不能用于where子
2、句中。(存在这个限制是因为where子句决定哪些行可以进入聚集阶段;因此它必须在聚集函数之前计算。)不过,我们通常都可以用其他方法实现我们的目的;在这里我们就可以使用子查询:SELECTcityFROMweatherWHEREtemp_lo=(SELECTmax(temp_lo)FROMweather);city---------------SanFrancisco(1row)这样做是OK的,因为子查询是一次独立的计算,它独立于外层的查询计算出自己的聚集。聚集同样也常用于groupby子句中。比如,我们可以获取每个城市低温的最高值SELECTcity,max(temp_lo)FRO
3、MweatherGROUPBYcity;city
4、max---------------+-----Hayward
5、37SanFrancisco
6、46(2rows)这样给我们每个城市一个输出。每个聚集结果都是在匹配该城市的行上面计算的。我们可以用having过滤这些分组:SELECTcity,max(temp_lo)FROMweatherGROUPBYcityHAVINGmax(temp_lo)<40;city
7、max---------+-----Hayward
8、37(1row)这些就只给出那些temp_lo数值曾经有低于40度温度的城市。最后,如果我们只关心那些名字以“S”开头的城
9、市,我们可以用:ELECTcity,max(temp_lo)FROMweatherWHEREcityLIKE'S%'(1)GROUPBYcityHAVINGmax(temp_lo)<40;
此文档下载收益归作者所有