• SQL group by、where和having语句用法


    SQL 语句中的 GROUP BY 子句用于将具有相同值的行分组在一起,通常与聚合函数(如 COUNT、SUM、AVG 等)一起使用。WHERE 子句用于筛选符合条件的行。HAVING 子句则在分组后对分组结果进行进一步筛选。
    以下是一个使用 SQL 语句中的 GROUP BY、WHERE 和 HAVING 子句的示例:

    1. SELECT
    2. column1,
    3. COUNT(column2) AS count_column2
    4. FROM
    5. table_name
    6. WHERE
    7. column1 > 100
    8. GROUP BY
    9. column1
    10. HAVING
    11. COUNT(column2) > 5;

    在这个示例中,我们首先根据 column1 列对数据进行分组。然后,我们使用 COUNT(column2) 函数计算每个分组中 column2 列的行数。最后,我们使用 HAVING 子句筛选出 column2 列行数大于 5 的分组。
    这个查询将返回一个结果集,其中包含 column1 列的值以及每个分组中 column2 列的行数。对于 column1 列中值大于 100 的行,结果集将仅包含那些 column2 列行数大于 5 的分组。

    说明:

    1.where、having、group by、order by的顺序是:where -> group by -> having -> order by

    2. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前. HAVING语句必须在ORDER BY子句之后。(where先执行,再groupby分组;groupby先分组,having在执行。)

    3.除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。count()为聚集函数,vend_id在后面groupby中有,所以select后面有。

    select vend_id, count(*) , sales from products group by vend_id;

    这个语句,其中sales字段,在group by中没有,所以查询的结果,sales的值是错误的!!!(切记)

    如果想用分组后的,sales的字段,可以采用left join的方式,相当于两个表匹配的方式,查询:(原始表B)

    select vend_id, sales from B left join (select vend_id, count(*) nums, min(sales) sales from products group by vend_id) as A on B.vend_id = A.vend_id WHERE.......

  • 相关阅读:
    Bazzite:专为 Steam Deck 和 PC 上的 Linux 游戏打造的发行版
    嵌入式开发中,嵌入式硬件和软件有什么区别?
    CSS基础(超详解)
    el-form动态检验rules
    什么是驱动程序签名,驱动程序如何获取数字签名?
    【数据结构与算法】链表的实现以及相关算法
    VI与VIM区别
    69. Sqrt(x)x 的平方根
    12-JavaSE基础巩固练习:字符串练习
    删除了个无用的参数,结果小丑竟是我自己!
  • 原文地址:https://blog.csdn.net/LG_15011399296/article/details/134079116