首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    神奇的 SQL 之 HAVING → 容易被轻视的主角

    开心一刻   一天,楼主和隔壁小男孩一起坐电梯,中途进来一位高挑的美女,她牵着一条雪白的贵宾犬   小男孩看着这条雪白的贵宾犬,甚是喜欢,说道:阿姨,我能摸下这个狗狗吗?   ...初识 HAVING   关于 SQL 中的 HAVING,相信大家都不陌生,它往往与 GROUP BY 配合使用,为聚合操作指定条件   说到指定条件,我们最先想到的往往是 WHERE 子句,但 WHERE...BY 子句,此时整张表会被聚合为一组,这种情况下 HAVING 子句也是可以使用的(HAVING 不是一定要和 GROUP BY 一起使用)     写的更严谨点,如下(没有 HAVING,不是主角,...ALL 谓词用于 NULL 或空集时会出现问题,我们可以用极值函数来代替;这里要求的是元素数最多的集合,因此可以用 MAX 函数 -- 使用极值函数求众数 SELECT salary, COUNT(*)...这里其实用到了 COUNT 函数,COUNT(*) 可以用于 NULL ,而 COUNT(列名) 与其他聚合函数一样,要先排除掉 NULL 的行再进行统计     当然,使用 CASE 表达式也可以实现同样的功能

    1.2K20

    你真的会玩SQL吗?之逻辑查询处理阶段

    在UNIQUE和PRIMARY KEY约束、排序和分组中, NULL被看做是相等的. 例如Group by 将null分为一组, 而order by将所有null排在一起....Group by子句中可以使用组函数, 在Sql 2000中一旦使用组函数, 其后面的步骤将都不能处理, 而在 Sql2005中没有这个限制. 第六步不常用, 略过....第八步中SELECT: 如果包含Group By子句, 那么在第5步后将只能使用Group By子句中出现的列, 如果要使用其他原始列则, 只能使用组函数....第九步中DISTINCT: 当使用Group By子句时, 使用Distinct是多余的, 他不会删除任何记录....如果定义了Distinct子句, 则只能排序上一步中返回的表VT9, 如果没有指定Distinct子句, 则可以排序不再最终结果集中的列.

    1.6K70

    MySQL 查询专题

    在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。 在使用 GROUP BY 子句前,需要知道一些重要的规定。...换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。 ❑ GROUP BY子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。...❑ 如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...在升序排序时可以指定它。但实际上,指定 ASC 没有多大用处 在对文本性数据进行排序时,A 与a 相同吗?a位于 B 之前,还是Z之后?这些问题不是理论问题,其答案取决于数据库的设置方式。...通常,子查询将返回单个列并且与单个列匹配,但如果需要也可以使用多个列。 虽然子查询一般与IN操作符结合使用,但也可以用于测试等于(=)、不等于()等。

    6.1K30

    SQL命令 GROUP BY

    GROUP BY子句接受查询的结果行,并根据一个或多个数据库列将它们分成单独的组。 当将SELECT与GROUP BY结合使用时,将为GROUP BY字段的每个不同值检索一行。...GROUP BY StreamField将流字段为NULL的记录数量减少为一条记录。 GROUP BY子句可以使用箭头语法(- >)操作符在非基表的表中指定字段。...GROUP BY Home_State 当选择列表由聚合字段组成时,不应将GROUP BY子句与DISTINCT子句一起使用。...组合字母大小写变体在一起(返回实际的字母大小写): GROUP BY可以将字母大小写不同的值分组在一起,并使用实际的字段字母大小写值返回分组的字段值(随机选择)。...这样做的好处是将每个字母变体作为一个单独的组返回。 它的性能缺点是不能使用字段的索引。 可以使用管理门户在系统范围内为包含GROUP BY子句的所有查询配置此行为。

    4.6K30

    你真的会玩SQL吗?让人晕头转向的三值逻辑

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接、外连接 你真的会玩SQL吗?三范式、数据完整性 你真的会玩SQL吗?...Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合 你真的会玩SQL吗?透视转换的艺术 你真的会玩SQL吗?...(建设表中包含一个CHECK约束,要求salary列的值必须大于0,向该表插入salary为NULL时可以被接受,因为(NULL>0)等于UNKNOWN,在check约束中被视为和TRUE一样) 在筛选器中比较两个...排序操作和分组操作认为两个NULL值是相等的。 如果表中有一列定义了UNIQUE约束,将无法向表中插入该列值为NULL的两行。 GROUP BY 子句把所有NULL值分到一组。...ORDER BY 子句把所有NULL值排列在一起。 知道了为什么在查询中筛选null的时候需要使用 is null 或者is not null ,常规条件表达式却无法筛选出?

    85380

    关于 Oracle 分组查询

    · COUNT(*):会实际的统计出表中的数据量; · COUNT(字段): |- 如果统计的字段上不包含有 null,那么与 COUNT(*)结果相同; |- 如果统计字段上包含有了 null,null...分组统计 · 限制一:统计函数单独使用时(没有 GROUP BY 子句)只能够出现统计函数,不能够出现其它字段。...BY 子句),SELECT 子句之中只允许出现统计函数与分组字段, 其它的任何字段都不允许出现。...FROM emp GROUP BY deptno ; · 限制三:统计函数在分组之中可以嵌套使用,但是嵌套之后的统计查询之中,SELECT 子句不允许再出现 任何的字段,包括分组字段。...· WHERE 子句:是在分组前使用,而且不能够使用统计函数进行验证,经过 WHERE 筛选后的数据才可以分组; · HAVING 子句:必须结合 GROUP BY 子句一起出现,是在分组后的过滤,可以使用统计函数

    75210

    关于sql和MySQL的语句执行顺序(必看)「建议收藏」

    今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?...一、sql执行顺序 from on join where group by(开始使用select中的别名,后面的语句中都可以使用) avg,sum…....第六步:group by 子句将中的唯一的值组合成为一组,得到虚拟表vt5。如果应用了group by,那么后面的所有步骤都只能得到的vt5的列或者是聚合函数(count、sum、avg等)。...执行 GROUP BY 子句, 把 tb_Grade 表按 “学生姓名” 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以在where中不可以使用select...中的别名,而having却可以使用,感谢网友 zyt1369 提出这个问题)    (4).

    2K10

    简单的增 删 改 查

    null 注意   is null  的写法 四: select语句 这里还是不说了,还是多说说子句吧 五:where子句 1: =    >     =    !...< 其中  与 !=都是不相等的意思 !>与!...相同的数据分到一组  (这一组就是最终结果的一条记录) 然后通过sum函数把各组的orderMoney数据相加, 结果是最终结果的第二个字段 我发现用group  by子句基本上都是和聚集函数一起用的...null的行将不会计算在内  count(*)将得到表里的所有行的数目 聚集函数不一定非和group by一起使用不可 (另外avg基本上都是和group by一起使用的) having子句是在组上放置条件的...sum(orderMoney)>5 group by得到了一个记录的集合 然后通过having子句,再在这个集合上做筛选

    60810

    《深入浅出SQL》问答录

    NULL是什么都没有的意思吗? A:当然不是!! 它从来就不等于0。而且它也不等于另一个NULL,事实上,两个NULL根本不能放在一起比较。...可以把列修改为不使用NULL,这需要在创建表时使用关键字NOT NULL。 创建表时使用DEFAULT,可于日后输入缺乏部分数据的记录时自动的填入默认值。...A:可以加上WHERE,可以在END后加上WHERE子句。这样,CASE就只会套用在符合WHERE子句的列上。 CASE表达式可以搭配UPDATE以外的语句吗? A:why not?...可以联接多于两张表吗? A:可以,后续章节再说,有点饿了。 ORDER BY 这些东西也能与联接放到一起吗? A:是的。 外联接呢? A:莫急。 花絮 字符串切割函数 ? ?...而后,外层查询才能利用这个值与列中其他值进行比较。 一般而言,子查询必须返回一个值,使用IN是例外情况。 所以说,子查询可以放在子查询里吗? A:of couse.

    3.4K50

    Hive Grouping Sets,CUBE与ROLLUP

    通过 GROUPING SETS 子句,你可采用多种方式对结果分组,而不必使用多个 SELECT 语句来实现这一目的。这就意味着,能够减少响应时间并提高性能。...所有 GROUPING SET 子句都可以逻辑表示为 UNION 连接的几个 GROUP BY 查询。下面展示了几个这样的等价示例。这有助于我们了解 GROUPING SETS 子句的思想。...的情况,可以使用如下简单方式来实现: SELECT GROUPING__ID, CASE WHEN dt IS NULL THEN 'total' ELSE dt END, CASE WHEN...CUBE与ROLLUP 通用语法是 WITH CUBE/ROLLUP。只能 GROUP BY 一起使用。 4.1 CUBE CUBE 简称数据魔方,可以实现 Hive 多个任意维度的查询。...4.2 ROLLUP ROLLUP 子句与 GROUP BY 一起使用用来计算维度上层次结构级别的聚合。ROLLUP 可以实现从右到左递减多级的统计。

    4.1K31
    领券