0
点赞
收藏
分享

微信扫一扫

SQL Part3 --- 聚合操作符

技术只适用于干活 2022-04-25 阅读 45
databasesql

SQL --- 聚合操作符

聚合操作符 Aggregate Operators

COUNT(A)

SELECT COUNT (*)
FROM Sailors S;
SELECT COUNT (DISTINCT S.sname)
FROM Sailors S

SUM(A)

 SELECT SUM (S.age)
FROM Sailors S
WHERE S.rating=10;

AVG(A)

SELECT AVG (S.age)
FROM Sailors S
WHERE S.rating=10

MAX(A), MIN(A)


SELECT S.sname, MAX(S.age)
FROM Sailors S;

#上面的写法是错的,因为target list里只能有MAX(S.age)一个属性
#正确写法如下
SELECT S.sname, S.age
FROM Sailors S
WHERE S.age = ( SELECT MAX(S2.age)
FROM Sailors S2 );

# 或者也可以这样写
SELECT S.sname, S.age
FROM Sailors S
WHERE ROWNUM <= 1
ORDER BY S.age DESC;

GROUP BY and HAVING

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

Example: 查找总访问量大于 200 的网站

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

Example: 将相同的business_id分组 HAVING COUNT(business_id) = 2 计算每个分组中相同的business_id的数量,挑选count = 2的business_id

SELECT DISTINCT business_id 
FROM BUSINESS_MAIN_CATEGORIES t
WHERE t.main_category in ('Convenience Stores', 'Dentists')
GROUP BY business_id
HAVING COUNT(business_id) = 2
举报

相关推荐

0 条评论