当前位置: 首页 > article >正文

SQL group by、where和having语句用法

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

SELECT   
    column1,  
    COUNT(column2) AS count_column2  
FROM  
    table_name  
WHERE  
    column1 > 100  
GROUP BY  
    column1  
HAVING  
    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.......


http://www.kler.cn/a/107543.html

相关文章:

  • Java 多线程(三)—— 死锁
  • Llama微调测试记录
  • LeetCode 86.分隔链表
  • 力扣515:在每个树行中找最大值
  • -1大于4?负数与无符号整数类型:size_t的比较问题(strlen)
  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • 20231027 比赛总结
  • CAx软件中若干C++日志库
  • 报错:Could not resolve host: mirrorlist.centos.org;Unknown error
  • 微信小程序设置 wx.showModal 提示框中 确定和取消按钮的颜色
  • LabVIEW开发TDS1000 和TDS2000 系列泰克示波器
  • React JSX常用语法总结
  • Python Selenium 之数据驱动测试的实现!
  • 【目标跟踪】多目标跟踪测距
  • 产品经理-关于B端与C端
  • MySQL主从复制(基于GTID--事务ID方式)
  • C51--单片机中断
  • 如何在宝塔面板安装配置MySQL数据库并实现公网访问
  • AJAX原理及介绍
  • 【计算机毕设小程序案例】基于SpringBoot的小演员招募小程序
  • 第九章 软件BUG和管理
  • HackTheBox-Starting Point--Tier 1---Crocodile
  • MySQL篇---第二篇
  • css如何将border线加到元素内部,占内边距,不占外边距
  • 【算法题】割后面积最大的蛋糕
  • JavaScript简介