天天看點

SQL學習之having子句參考源SQL having 子句示例資料基本使用

目錄

  • 參考源
  • SQL having 子句
  • 示例資料
  • 基本使用

參考源

  • 簡單教程
    • https://www.twle.cn/l/yufei/sql/sql-basic-having.html
  • 菜鳥教程
    • https://www.runoob.com/sql/sql-having.html

SQL having 子句

SQL 中的

having

子句用于篩選分組 ( GROUP BY ) 後的各組資料。

可以看出:

where

做了第一層篩選,

having

做第二層篩選

注意:

having

子句一般跟在

group by

子句後面

示例資料

CREATE DATABASE IF NOT EXISTS hardy_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE hardy_db;

DROP TABLE IF EXISTS lesson;

CREATE TABLE lesson_views (
	id INT ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR ( 32 ) DEFAULT '',
	lession_id int(11) NOT NULL default 0,
	views INT ( 11 ) NOT NULL DEFAULT 0,
	created_at TIMESTAMP 
);

INSERT INTO lesson_views ( id, name, views,lesson_id, created_at )
VALUES
	( 1, 'Python3 基礎教程', 981, 1, '2019-03-18 13:52:03' ),
	( 2, 'JavaScript 基礎教程', 73, 2, '2019-03-18 16:03:32' ),
	( 3, 'Ruby 基礎教程', 199, 3, '2019-04-01 06:16:14' ),
	( 4, 'SQL 基礎教程', 533, 1, '2019-05-02 08:13:42' ),
	( 5, 'Linux 基礎教程', 1000, 2, '2019-06-02 08:13:42' ),
	( 6, 'Python3 基礎教程', 981, 3, '2019-03-18 13:52:03' ),
	( 7, 'JavaScript 基礎教程', 73, 1, '2019-03-18 16:03:32' ),
	( 8, 'Ruby 基礎教程', 199, 2, '2019-04-01 06:16:14' ),
	( 9, 'SQL 基礎教程', 533, 3, '2019-05-02 08:13:42' ),
	( 10, 'Linux 基礎教程', 1000, 1, '2019-06-02 08:13:42' );
           

基本使用

  1. 使用

    group by

    語句統計下所有課程的通路量

    輸出結果如下

    mysql> select name, sum(views) from lesson_views group by name;
    +---------------------+------------+
    | name                | sum(views) |
    +---------------------+------------+
    | Python3 基礎教程    |       1962 |
    | JavaScript 基礎教程 |        146 |
    | Ruby 基礎教程       |        398 |
    | SQL 基礎教程        |       1066 |
    | Linux 基礎教程      |       2000 |
    +---------------------+------------+
    5 rows in set (0.00 sec)
               
  2. 現在需要選擇總通路量高于 100 課程,那麼可以使用下面的 SQL 語句

    運作結果輸出如下

    mysql> select name, sum(views) as total_views from lesson_views group by name ha
    ving total_views > 100;
    +---------------------+-------------+
    | name                | total_views |
    +---------------------+-------------+
    | Python3 基礎教程    |        1962 |
    | JavaScript 基礎教程 |         146 |
    | Ruby 基礎教程       |         398 |
    | SQL 基礎教程        |        1066 |
    | Linux 基礎教程      |        2000 |
    +---------------------+-------------+
    5 rows in set (0.00 sec)