【PostGreSql】SQL中只要用到聚合函数就一定要用到group by 吗?
一,问题:
select
aa.apply_time,
aa.product_cid,
count(case when aa.r_state='审核中' then apply_id end )审核中订单数,
count(case when aa.r_state LIKE '拒绝' then apply_id end )拒绝订单数
from view_test_sys_apply_standard_tri_flow_temp aa GROUP BY 1
> ERROR: column "aa.product_cid" must appear in the GROUP BY clause or be used in an aggregate function
LINE 3: aa.product_cid, ^> 时间: 0.012s
使用group by时上报:
ERROR: column "aa.product_cid" must appear in the GROUP BY clause or be used in an aggregate function
意思是aa.product_cid字段必须在GROUP BY中出现或者被用于聚合函数
二,解答:
看情况
1、当聚集函数和非聚集函数出现在一起时,需要将非聚集函数进行group by
2、当只做聚集函数查询时候,就不需要进行分组了。
三,实例:
1,当聚集函数和非聚集函数出现在一起时,需要将非聚集函数进行group by
select
aa.apply_time,
aa.product_cid,
count(case when aa.r_state='审核中' then apply_id end )审核中订单数,
count(case when aa.r_state LIKE '拒绝' then apply_id end )拒绝订单数
from view_test_sys_apply_standard_tri_flow_temp aa GROUP BY 1,2
2,当只做聚集函数查询时候,就不需要进行分组了
select
count(case when aa.r_state='审核中' then apply_id end )审核中订单数,
count(case when aa.r_state LIKE '拒绝' then apply_id end )拒绝订单数
from view_test_sys_apply_standard_tri_flow_temp aa
3,当聚集函数和非聚集函数出现在一起时,将非聚集函数不进行group by
select
aa.apply_time,
aa.product_cid,
count(case when aa.r_state='审核中' then apply_id end )审核中订单数,
count(case when aa.r_state LIKE '拒绝' then apply_id end )拒绝订单数
from view_test_sys_apply_standard_tri_flow_temp aa
第一个非聚合函数使用group by,而第二个非聚合函数不适用group by时也是会上报错误;
select
aa.apply_time,
aa.product_cid,
count(case when aa.r_state='审核中' then apply_id end )审核中订单数,
count(case when aa.r_state LIKE '拒绝' then apply_id end )拒绝订单数
from view_test_sys_apply_standard_tri_flow_temp aa GROUP BY 1
【PostGreSql】SQL中只要用到聚合函数就一定要用到group by 吗?相关推荐
- SQL中只要用到聚合函数就一定要用到group by 吗?
答:看情况 1.当只做聚集函数查询时候,就不需要进行分组了. 2.当聚集函数和非聚集函数出现在一起时,需要将非聚集函数进行group by 举例来说: 情况一: 不需要使用Group by 进行分组, ...
- SQL中实现截取字符串的函数
SQL中实现截取字符串的函数 如果想实现从数据库中取数据时截取一个字段下的内容或者截取一串字符串,则能够实现这种效果的函数有Left,Right,SubString三个函数. 1.Left函数:Lef ...
- sql中的trim()以及translate()函数
oracle 函数 介绍一下sql中的trim()以及translate()函数 首先说一下trim(),trim()和我们接触的编程语言一样也是用来去掉前后空格的,LTRIM(),RTRIM(),T ...
- PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化
PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化 准备两个表: --T1(2,3) --T2(1,2,3,4)--ALL,ANY,SOME 的子查询 ...
- SQL SERVER 2005允许自定义聚合函数
不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict ID NAME CATEGORY 1 RED COLOR ...
- SQL Server数据库第五课:使用SQL进行模糊查询、聚合函数的使用
知识点:SQL中通配符的用法.掌握like.between.in模糊查询的用法.聚合函数的用法. 1.模糊查询 什么是模糊查询?上一章我们在做查询时使用的条件都是明确的,比如找叫"李明&qu ...
- SQL中常用的字符串REVERSE函数和SUBSTRING函数详解!
今天继续整理日常可能经常遇到的一些处理字符串的函数,记得点赞收藏!以备不时之需! REVERSE(expression)函数解析:SQL Server中的此函数用于反转(颠倒)指定的字符串,也就是说把 ...
- SQL中的三种count()函数
数据库的使用中,Count() 函数用于统计数据表的记录,返回匹配指定条件的行数. 三种Count() 函数 count(1).count(*).count(列名) 区别 1. count(1).co ...
- SQL中常用的字符串LEFT函数和RIGHT函数详解!
今天继续整理日常可能经常遇到的一些处理字符串的函数,记得点赞收藏!以备不时之需!看到最后有惊喜! LEFT(expression, length)函数 解析:从提供的字符串的左侧开始提取给定长度的字符 ...
最新文章
- linux nexus能备份吗,nexus 从Window迁移至Linux
- 支付宝AI摘下视觉竞赛世界冠军,能精准区分同种类物体的细微差别
- 构造函数(包含this关键字的简单应用)
- Mac 建PHP 环境 及 配置 apache 默认目录
- 【PAT乙级】1009 说反话 (20 分)
- OpenGL使用深度剥离命令获得独立的透明度
- java简单运算程序_JAVA实现简单四则混合运算
- mysql删除端口配置文件_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
- HttpClients调用restful接口get,post,put,delete接口工具类
- [Linux/Unix]常用命令
- GridView 导出到 Excel文件
- 新概念51单片机c语言教程doc,新概念51单片机C语言教程实例代码.doc
- 谷歌地球Google Earth打不开的解决办法
- Vin码识别/车架号识别
- 喜报|知道创宇ScanA入选华为云内容安全领域首家联营联运生态伙伴
- 华为机试真题 C++ 实现【最短木板长度】【100%通过率】【2022.11 Q4 新题】
- 人脸识别学生考勤系统【2】--登录
- 远程桌面从服务器拷文件出错
- 《Cluster Contrast for Unsupervised Person Re-Identification》论文阅读
- DICOM图像像素值(灰度值)转换为CT值