SQL语言 group by 和 LEFT JOIN 关键字语句使用

MySql 语言 group by 和LEFT JOIN 关键字语句使用

(1) GROUP BY 语句 :
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
语法:

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

如上图是原数据库,下图是操作后的数据库–将 site_id > 2 的所有重复的 site_id 表格中的 count 相加结果输出:
SQL语言 group by 和 LEFT JOIN 关键字语句使用_第1张图片

mysql> select access_log.site_id,sum(access_log.count) AS nums
    -> FROM access_log
    -> where  access_log.site_id > 2
    -> Group by access_log.site_id;

SQL语言 group by 和 LEFT JOIN 关键字语句使用_第2张图片

(2) GROUP BY 语句
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
SQL语言 group by 和 LEFT JOIN 关键字语句使用_第3张图片
两个原数据表如下:
数据表:access_log :
SQL语言 group by 和 LEFT JOIN 关键字语句使用_第4张图片
数据表:websites :
SQL语言 group by 和 LEFT JOIN 关键字语句使用_第5张图片

1.以下实现了 access_log 下 site_id 的 附属于websites的 id ,统计输出websites中 name 出现的次数并列出表格:

mysql> select websites.name,count(access_log.aid) as nums from access_log
    -> left join websites
    -> on access_log.site_id = websites.id
    -> group by websites.name;

SQL语言 group by 和 LEFT JOIN 关键字语句使用_第6张图片

2.下面的 SQL 语句将返回所有网站及他们的访问量(没有的话输出null),date 输出最后访问的时间,并按访问量大小从多到少排列。

mysql> select websites.name,access_log.count,access_log.date
    -> from websites
    ->  left join access_log
    ->  on websites.id = access_log.site_id
    -> order by access_log.count DESC;

SQL语言 group by 和 LEFT JOIN 关键字语句使用_第7张图片

你可能感兴趣的:(MySQl,SQL语句,GROUP,BY,语句,LEFT,JOIN语句,SQL语句,GROUP,BY,语句,LEFT,JOIN语句)