首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GROUP BY 后 SELECT 的限制:which is not functionally dependent on columns in GROUP BY clause

GROUP BY 后 SELECT 的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、...子句) ?...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下 语法支持类    ONLY_FULL_GROUP_BY 对于 GROUP BY 聚合操作,如果在 SELECT 、HAVING 或者...为什么聚合后不能再引用原表   很多人都知道聚合查询的限制,但是很少有人能正确地理解为什么会有这样的约束。...SELECT 子句中不能直接引用原表的原因;   3、一般来说,单元素集合的属性和其唯一元素的属性是一样的。

3K50
您找到你想要的搜索结果了吗?
是的
没有找到

SQLGROUP BY语句介绍

本文主要介绍 SQL(Structured Query Language) GROUP BY 语句的相关知识,同时通过用法示例介绍 GROUP BY 语句的常见用法。...1 概述 GROUP BY 语句通常用于配合聚合函数(如 COUNT()、MAX() 等),根据一个或多个对结果集进行分组。...一般情况下,GROUP BY 必须要配合聚合函数一起使用,通过使用聚合函数,在分组之后可以对组内结果进行计数(COUNT)、求和(SUM),求平均数(AVG)操作等。...2.1 结合聚合函数 首先,不使用聚合函数,只使用 GROUP BY,查询结果如下: 上述查询结果表明,当不使用聚合函数时,GROUP BY 的结果是分组内容的第一组查询结果。...当然,在实际使用,通常都需要将 GROUP BY 与聚合函数结合起来使用,来实现某种目的。

1.4K20

Linuxgroup文件详解

文件样例 myths@myths-X450LD:~$ cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:...与/etc/passwd的登录名一样,组名不应重复。 口令 就是密码,存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。...将用户分组是Linux系统对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组可以有多个用户,一个用户也可以属于不同的组。...当一个用户同时是多个组的成员时,在/etc/passwd文件记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。...用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组的成员。直接加参数即可: root@myths-X450LD:~# newgrp myths

1.8K30

SQLGROUP BY用法示例

概述 GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。...GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等。...image.png 部门人数 我们现在想知道每个部门有多少名在职员工,步骤如下: 筛选在职员工 where to_date='9999-01-01'; 对部门进行分组group by dept_no...image.png HAVING 当然提到GROUP BY 我们就不得不提到HAVING,HAVING相当于条件筛选,但它与WHERE筛选不同,HAVING是对于GROUP BY对象进行筛选。...image.png 以上便是GROUP BY的一些基本使用方法介绍,如有其他问题,欢迎留言~ ---- peace~

8.2K20

Hivegroup by还能这样玩?

表中一共有四数据,分别是地区,员工姓名,月份和销量。目前的需求时,想同时得到各地区的销量、各员工的销量,以及每个员工在每个地区的销量。...但是不是觉得太繁琐了,其实hive还有一个更高阶的分组函数,可以帮我们更加简洁的实现上面的功能,即Grouping Sets函数,我们可以把想要用于分组的全都声明在Grouping Sets函数,...可以看到,使用grouping sets必须首先用group by声明用于分组的,如果不使用group by声明,报错如下: FAILED: ParseException line 5:0 cannot...recognize input near 'grouping' 'sets' '(' in table source 同样,用于分组的必须全都在group by声明,如果grouping sets...使用了没有在group by中出现的,如下面的代码报错如下: select area,name,sum(cnt) as sum_cnt from default.salerinfo3 group

70720

为什么 GROUP BY 之后不能直接引用原表

为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句) ? 莫急,我们慢慢往下看。...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下   语法支持类         ONLY_FULL_GROUP_BY       对于 GROUP BY 聚合操作,如果在 SELECT ...就会约束:当我们进行聚合查询的时候,SELECT 的不能直接包含非 GROUP BY 子句中的。...为什么聚合后不能再引用原表   很多人都知道聚合查询的限制,但是很少有人能正确地理解为什么会有这样的约束。...SELECT 子句中不能直接引用原表的原因;   3、一般来说,单元素集合的属性和其唯一元素的属性是一样的。

1.7K10

Linux 的 Process Group 和 Session

进程可以理解为 "进行的程序", 在 Linux 上可以通过 fork 来创建新的进程, 然后可以使用 exec 来在子进程或者父进程执行新的程序....进程组 -- Process Group 顾名思义就是一组进程. 进程组的 id (pgid) 就是进程组组长(group leader)的 pid....会话 -- session session 是一个更大的概念, 一个 session 可以包含多个 process group....group 的进程属于不同的 session, 所以 POSIX 标准直接禁止了这么做. session 退出 当一个session leader 退出时, 其他进程不会受到任何影响, 但是因为 session...leader 退出可能造成 orphaned process group, 因此在shell, 一般情况下会造成进程退出的情况 Orphaned Process Group 当一个 group leader

1.7K20

秒懂mysqlgroup by用法

BY name 你应该很容易知道运行的结果,没错,就是下表2: 可是为了能够更好的理解“group by”多个“和”聚合函数“的应用,我建议在思考的过程,由表1到表2的过程,增加一个虚构的中间表...2.FROM test Group BY name:该句执行后,我们想象生成了虚拟表3,如下所图所示,生成过程是这样的:group by name,那么找name那一,具有相同name值的行,合并成一行...为什么name每个单元格只有一个值呢,因为我们就是用namegroup by的。 (3)那么对于id和number里面的单元格有多个数据的情况怎么办呢?...(4)例如我们执行select name,sum(number) from test group by name,那么sum就对虚拟表3的number的每个单元格进行sum操作,例如对name为aa的那一行的...number执行sum操作,即2+3,返回5,最后执行结果如下: 5)group by 多个字段该怎么理解呢:如group by name,number,我们可以把name和number 看成一个整体字段

2.3K20

SolrGroup和Facet的用法

先来看一下Group与Facet的区别: 相同点:两者都能分组一个或多个字段并求数量,并支持组内分页 不同点: facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到具体的数据...,还得需要查询一次或多次 group可以得到分组的组数量,一次请求,可以拿到所有的数据。...group可以用来做这个功能: ?...Group常用属性介绍: group=true开启group group.field需要分组的字段 group.limit限制每个分组里面返回的数量 group.offset配合limit可实现分页...group.ngroups 开启可得到匹配组的数量 Facet常用属性介绍: facet=true开启facet功能 facet.field分组字段 facet.prefix前缀查询

1.8K50

Postgresql源码(101)深入分析clog组提交(clog group updates)

1.2 CLOGgroup_lsn Postgresql的XLOG和CLOG是分开保存的,所以存在先写后写的问题。...场景二:XLOG没落盘,CLOG落盘 有问题:事务在clog查询到已提交,但XLOG丢失redo无法恢复该事物,所以该事物应该是未提交状态,与CLOG矛盾——发生数据不一致。...所以在异步移交场景下,Postgresql做了另外一层保护,使用group_lsn来保证xlog先与clog落盘, /* We store the latest async LSN for each group...1.3 全局唯一的PROC HDR结构 其中CLOG组提交会使用到的是clogGroupFirst,记录int类型,指向procs,第一个等待组提交的那个proc(组提交leader)。...0 || memcmp(subxids, MyProc->subxids.xids, nsubxids * sizeof(TransactionId)) == 0)) 需要满足 CLOG必须都在一个页面上

70120

MySQLgroup_concat函数用法总结

MySQLgroup_concat函数用法总结 一、group_concat函数的功能 将group by产生的同一个分组的值连接起来,返回一个字符串结果。...group_concat函数首先根据group by指定的进行分组,将同一组的显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的。...; (2)如果需要对结果的值进行排序,可以使用order by子句; (3)separator是一个字符串值,默认为逗号。...三、使用举例 group_concat(emp_name):只指定了字段名,销售部有两个同名的也全部显示出来,并且姓名的连接顺序就是表的记录顺序,连接的分隔符为逗号,结果如下: mysql> select...| +------------+---------------------------------+ 3 rows in set (0.00 sec) 添加了order by参数,表的记录按

1.1K20

【黄啊码】MySQL入门—5、数据库小技巧:单个group by就会,多个呢?

好了,先来解答上节课留下的问题:【注:由于周末临时用了别的电脑,所以数据会有所不同】我们在数据库表中新增一user_height表示身高,然后拿到所有数据:图片我们如果单单用user_age来分组看看结果如何...:你:这也太简单了吧,我来:select * from user_info group by user_age; 图片你:这。。。...我来总结一下吧:简而言之就是这里边user_id不是聚合,在功能上也不是groug by所需要的字段。你:user_id不行?那user_name呢?...黄啊码:我发觉大聪明最近有长进了select user_age from user_info group by user_age;图片确实是可以的,这里就相当于把user_age当成聚合来使用。...你:【下次再也不出风头了】select user_age,user_height from user_info group by user_age,user_height;图片好了,多个进行group

1.3K40
领券