SQL实例之六 Group By Having

SELECT SKU, StartTime, min(StartTime),sum(QuantitySold),count(id) as online FROM ebay_listings
WHERE ListingStatus = 'Active'
GROUP BY SKU HAVING min(StartTime) < "2016-03-01 01:01:01" 
AND (min(StartTime) > "2016-01-01 01:01:01" AND min(StartTime) < "2016-04-01 01:01:01")
AND sum(QuantitySold) < 1
ORDER BY min(StartTime)

首先根据SKU来进行分组,然后通过聚合函数提取一个组中的值,比如min(StartTime),取回一个组中的最小时间。搭配使用聚合函数可以当做一般查询中的Where条件类使用,只不过这里针对的是一个组而已。

以上SQL需要实现的是对一个集合进行分组,然后应用组内的最小时间进行过滤,比如最小时间是否在一个范围内。一条简单的SQL,实现了期望。