• 关于 group分组统计 的搜索结果

回答

思路是:①先用case when语句,给每条记录打上一个时间分组标识。如果统计的是每小时最后一条,就按小时分组;如果统计每天最后一条,就按日期分组;得到一个表a。 ②在表a的基础上,用group by 语句按时间分组标识分组后,order by atime desc,然后取每个分组的第一条数据。

小旋风柴进 2019-12-02 02:05:19 0 浏览量 回答数 0

回答

可以用统计Sql,按药品名称进行分组统计的,先统计,再将两个表连接起来,含有group by子句的sql查询字段只能查询统计数据及group by中的字段。参考:select 项目名称,sum(数量) AS 总量 ,sum(金额) 总额 group by 项目名称 as a join select 项目名称,规格,单价 b on a.项目名称=b.项目名称

吴孟桥 2019-12-02 02:51:39 0 浏览量 回答数 0

问题

单特征变量的分组

glitterblue 2019-12-01 19:28:16 1312 浏览量 回答数 1

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

0.假设一天几十万的订单,搞个脚本,每天跑一次,统计一天的订单数1.根据订单时间从数据库获取每天的总订单可以为时间加上索引2.根据取出的数据,从程序方面,按用户分组,统计订单中每位用户的订单数不要用sql来做分组统计,因为数据库压力会非常大,可以放到php中来做处理,统计这些订单中的每一个用户有多少订单,相当于sql中的group by user3.然后加到用户的订单总数中,可以放到redis中

星球华人 2019-12-02 01:44:55 0 浏览量 回答数 0

回答

相信group by你一定用过吧, 先对比说下 partition by关键字是oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它有一部分函数既是聚合函数也是分析函数,比如avg、max,也有一部分是特有的,比如first、rank,除了order by子句外,分析函数在一个查询中优先级最低。至于partition by和group by谁的性能更好,要看具体情况而定,partition by的作用仅用于分组,那么性能可能比不上group by “答案来源于网络,供您参考”

牧明 2019-12-02 02:14:55 0 浏览量 回答数 0

问题

统计每个学生的总学分是对什么分组

吴孟桥 2019-12-01 20:00:42 1070 浏览量 回答数 1

问题

按天分组查询,统计数据的sql语句

落地花开啦 2019-12-01 19:52:28 2252 浏览量 回答数 1

问题

sql表进行数据统计,由第一个表统计得到第二个表

吴孟桥 2019-12-01 20:03:14 954 浏览量 回答数 1

回答

分组后,统计记录条数:  SELECT num,count(*) AS counts from test_a GROUP BY num;   对num去重后的数量的统计:  SELECT count(t.counts) FROM ( SELECT num,count(*) AS counts from test_a GROUP BY num ) AS t;  SELECT count(DISTINCT num) AS count FROM test_a;  它俩结果一样,都是5;只是一个是子查询(嵌套),一个是内置函数 distinct();

wangccsy 2019-12-02 01:38:29 0 浏览量 回答数 0

问题

云监控日志监控如何管理日志监控

反向一觉 2019-12-01 21:24:42 1485 浏览量 回答数 0

回答

Group 管理接口 API 描述 OnsMqttGroupIdCreate 使用 OnsMqttGroupIdCreate 在服务器上创建微消息队列 MQTT 版的分组,即 Group ID(GID)。 OnsMqttGroupIdDelete 使用 OnsMqttGroupIdDelete 在服务器上删除已经存在的微消息队列 MQTT 版的 GID。 OnsMqttGroupIdList 使用 OnsMqttGroupIdList 查询目标地域(Region)里您所有的 GID。 设备管理接口 API 描述 OnsMqttQueryHistoryOnline 使用 OnsMqttQueryHistoryOnline 根据 GID 和给定的时间段查询历史在线设备的数量曲线。 OnsMqttQueryClientByTopic 使用 OnsMqttQueryClientByTopic 根据 MQTT 的 Topic 统计订阅该 Topic 的在线设备的数量。 OnsMqttQueryClientByGroupId 使用 OnsMqttQueryClientByGroupId 根据 GID 统计属于该 Group 下的在线设备的数量。 OnsMqttQueryClientByClientId 使用 OnsMqttQueryClientByClientId 根据 Client ID 查询指定设备的连接信息,包含在线信息、订阅关系等。 资源报表接口 API 描述 OnsMqttQueryMsgTransTrend 使用 OnsMqttQueryMsgTransTrend 根据 Topic 等信息查询历史消息收发量。

保持可爱mmm 2020-03-28 20:43:43 0 浏览量 回答数 0

问题

按天分组查询,统计数据?报错

爱吃鱼的程序员 2020-06-22 22:27:56 0 浏览量 回答数 1

回答

ReCNZZ每天百亿条日志写入,SLSODPS轻松拆招 分组统计是怎么做的?  sls没看到有group by的功能啊

大多数1 2019-12-02 00:24:13 0 浏览量 回答数 0

问题

SQL按时间周期分组,取分组数据

小旋风柴进 2019-12-01 20:14:49 1065 浏览量 回答数 1

问题

mongodb 如何进行模糊分组查询?

落地花开啦 2019-12-01 20:03:51 1262 浏览量 回答数 1

回答

统计分析的对象或视角,定义数据需要汇总的程度,可以理解为聚合运算时的分组条件(类似于SQL中group by的对象)。粒度是维度的一个组合,指明您的统计范围。例如,某个指标是某个卖家在某个省份的成交额,则粒度就是卖家、省份这两个维度的组合。

LiuWH 2020-03-23 11:32:09 0 浏览量 回答数 0

问题

ODPS能否使用CONVERT函数

rexu 2019-12-01 19:26:44 1313 浏览量 回答数 2

问题

一个分组SQL,如何使在查询不到结果的时候,得到一条数据

吴孟桥 2019-12-01 19:50:35 847 浏览量 回答数 1

问题

PhpSDK的搜索如何操作?(14)

轩墨 2019-12-01 20:58:53 1024 浏览量 回答数 0

回答

iot.prod.CreateProductTopicFailed 创建产品的Topic类失败。 请确认入参信息正确,然后重试。 iot.prod.InvalidAliyunCommodityCode 入参AliyunCommodityCode值错误。 AliyunCommodityCode的可选值只有iothub_senior和iothub。 iot.prod.InvalidFormattedCatId 入参CategoryId(产品的设备类型)错误。 iot.prod.InvalidFormattedProductkey 入参产品ProductKey格式错误。 请核对输入的ProductKey值。 iot.prod.InvalidFormattedProductName 入参产品名称格式错误。 产品名应满足以下限制:由中文、英文字母、数字和下划线(_)组成,长度为4-30位(一个中文字符占两位)。 iot.prod.LongProductDesc 产品描述字符数超出限定值。 描述信息应在100字符以内。 iot.prod.InvalidNodeType 产品的节点类型错误。 节点类型支持的可选值: 0:设备 1:网关 iot.prod.NotExistedProduct 产品不存在。 输入的ProductKey值在当前账号下不存在。 iot.prod.NotOpenID2Service 没有开通ID²服务。 该产品在创建时没有开通ID²安全认证服务。ID²安全认证服务只能在创建产品时开通,并且,产品创建成功后,不能更改是否使用ID²认证的状态。 iot.prod.NotSeniorProduct 产品不是高级版产品。 iot.prod.NullProductKey 入参产品ProductKey不能为空。 iot.prod.NullProductName 入参产品名称不能为空。 iot.prod.ProductCountExceedMax 产品总数已超过最大限制数量。 一个阿里云账号下最多可有1,000个产品。 iot.prod.QueryDeviceCountActionError 查询产品下的设备总数失败。 请确认入参信息正确,然后重试。 iot.prod.QueryProductAbilitiesFailed 获取产品功能失败。 请确认入参信息是否正确,如Identifier值等。 iot.prod.QueryProductAbilityFailed 查询产品功能失败。 请确认入参信息是否正确,如Identifier值等。 iot.prod.QueryProductListActionError 获取产品列表数据失败。 请确认入参信息正确,然后重试。 iot.prod.UpdateProductFailed 更新产品信息失败。 请确认入参信息正确,然后重试。 设备(Device)相关错误码 以iot.device开头的错误码为设备相关错误码。 错误码 描述 iot.device.AddTopoRelationFailed 添加拓扑关系失败。 请确认入参信息正确,然后重试。 iot.device.AlreadyExistedDeviceName 设备名称已经存在。 设备名称需在产品维度唯一。 iot.device.ApplyManyDevicesFailed 申请批量创建设备失败。 请确认入参信息正确,然后重试。 iot.device.CreateDeviceFailed 创建设备失败。 请确认入参信息正确,然后重试。 iot.device.CreateDeviceTaskIsRunning 创建设备的申请任务还在执行中。 iot.device.DeviceApplyIsNotFound 申请设备的申请单不存在。 请确认输入的ApplyId值。其值需与您调用BatchCheckDeviceNames返回的ApplyId值一致。 iot.device.DeviceCountExceeded 批量申请的设备数量超过最大值。 单次调用,最多批量注册1,000 个设备。 iot.device.DeleteDeviceFailed 删除设备失败。 请确认入参信息正确,然后重试。 iot.device.DeleteDevicePropertyFailed 删除设备属性失败。 请确认入参信息正确,然后重试。 iot.device.DisableDeviceFailed 禁用设备失败。 请确认入参信息正确,然后重试。 iot.device.EnableDeviceFailed 启用设备失败。 请确认入参信息正确,然后重试。 iot.device.InactiveDevice 设备未激活,即物理设备从未连接物联网平台。 iot.device.InvalidFormattedApplyId 创建设备的申请单(ApplyId)错误。 其值需与您调用BatchCheckDeviceNames返回的ApplyId值一致。 iot.device.IncorrentDeviceApplyInfo 设备申请信息错误。 请确认入参信息,如ApplyId等。 iot.device.InvalidFormattedDeviceName 设备名称格式错误。 设备名称长度为4-32个字符,可以包含英文字母、数字和特殊字符:连字符(-)、下划线(_)、at符号(@)、点号(.)、和英文冒号(:)。 iot.device.InvalidFormattedDevicePropertyKey 设备属性标识符格式错误。 请查看相关API文档中,关于入参属性格式的描述。 iot.device.InvalidFormattedDevicePropertiesString 入参设备属性格式错误。 请查看相关API文档中,关于入参属性格式的描述。 iot.device.InvalidIoTId 设备ID错误。 请调用QueryDeviceDetail或QueryDevice查看正确的IotId值,或用ProductKey与DeviceName组合代替IotId。 iot.device.InvalidTimeBucket 指定的时间区间不合法。 请根据API文档中描述正确设置参数。 Asc为0倒序查询时,StartTime必须大于EndTime。 Asc为1正序查询时,StartTime必须小于EndTime。 iot.device.InvokeThingServiceFailed 调用设备服务失败。 请检查输入参数是否正确,如Args的参数格式和取值等。 iot.device.LongDevicePropertiesString 入参设备属性长度超过最大值。 请查看相关API文档的限制说明。 iot.device.NoneDeviceNameElement 设备名称列表为空。 iot.device.NoneDeviceProperties 没有有效的设备属性。 请核对传入的属性Identifier是否与TSL中定义的一致。 iot.device.NotExistedDevice 设备不存在。 传入的设备IotId、ProductKey或DeviceName值错误。请调用QueryDeviceDetail或QueryDevice查看正确值。 iot.device.NullApplyId 创建设备的申请ID(ApplyId)不能为空。 iot.device.NullDeviceName 设备名称不能为空。 iot.device.NullDevicePropertyKey 设备属性名称不能为空。 iot.device.NullDevicePropertiesString 入参设备属性不能为空。 iot.device.QueryDeviceApplyActionError 查询设备申请单信息出错。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceAttrDataHistoryFailed 获取设备属性数据历史记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceAttrStatusFailed 获取设备属性状态信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceEventHistoryFailed 获取设备事件调用记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceListActionError 查询设备列表失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceServiceHistoryFailed 获取设备服务调用记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceStatisticsFailed 查询设备统计信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceStatusFailed 查询设备状态信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryTopoRelationFailed 查询拓扑关系失败。 请确认入参信息是否正确。如,传入的PageSize值大于限定值50会报此错误。 iot.device.RemoveTopoRelationFailed 移除拓扑关系失败。 请确认入参信息正确,然后重试。 iot.device.SaveOrUpdateDevicePropertiesFailed 新增或者修改设备属性失败。 请确认入参信息正确,然后重试。 iot.device.SetDevicePropertyFailed 设置设备属性失败。 请检查入参Items的参数值和格式是否正确,指定的属性是否是读写型。 iot.device.TooManyDevicePropertiesPerTime 传入的属性个数超过限定值。 请参见相关API文档限制说明。 iot.device.TopoRelationCountExceeded 拓扑关系数量过多。 请参见使用限制中网关与子设备数量限制。 iot.device.VerifyDeviceFailed 验证设备失败。 请确认入参信息正确,然后重试。 设备分组(Group)相关错误码 以iot.group开头的错误码为设备分组相关错误码。 错误码 描述 iot.group.NullGroupId 入参分组ID没有赋值。 iot.group.DeleteGroupFailed 删除分组失败。 请确认入参信息正确,然后重试。 iot.group.SubGroupNotNull 分组下有子分组。 当分组下有子分组时,不能删除分组,需先删除子分组。 iot.group.InvalidGroupName 分组名称不合法。 分组名称可包含中文汉字、英文字母、数字和下划线(_)。长度范围 4 - 30 字符(一个中文汉字占二个字符)。 iot.group.GroupNameExisted 分组名称已存在。 iot.group.QueryGroupInfoFailed 查询分组详情失败。 请确认入参信息正确,然后重试。 iot.group.NotExistedGroup 分组不存在。 请确认GroupId值。 iot.group.QueryGroupCountFailed 查询分组数量失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupListFailed 查询分组列表失败。 请确认入参信息正确,然后重试。 iot.group.BindGroupRelationFailed 绑定分组关系失败。 请确认入参信息正确,然后重试。 iot.group.UpdateGroupFailed 修改分组信息失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupTreeFailed 获取分组关系结构失败。 请确认入参信息正确,然后重试。 iot.group.CreateGroupFailed 创建分组失败。 请确认入参信息正确,然后重试。 iot.group.InvalidFormattedTagString 标签格式不合法。 标签数据为JSON格式。由标签的tagKey和tagValue组成,tagKey和tagValue均不能为空。多个标签以英文逗号间隔。如,[{"tagKey":"h1","tagValue":"rr"},{"tagKey":"7h","tagValue":"rr"}]。 iot.group.TagCountExceedMax 标签数量超过最大值。 每个分组最多可有100个标签。 iot.group.GroupCountExceedMax 分组数量超过最大值。 一个分组最多可包含100个子分组。 一个设备最多可以被添加到10个分组中。 iot.group.SetGroupTagFailed 设置分组标签信息失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupTagFailed 查询分组标签信息失败。 请确认入参信息正确,然后重试。 iot.group.LongGroupDescError 分组描述字段过长。 分组描述长度限制为100字符(一个中文汉字占一个字符)。 iot.group.QueryGroupRelationFailed 查询分组关系失败。 请确认入参信息正确,然后重试。 iot.group.GroupLevelExceedingLimitError 分组层级超过限制。 分组只支持三级嵌套,即分组>子分组>子子分组。 消息相关错误码 以iot.messagebroker开头的错误码为消息相关错误码。此类错误码主要出现在调用消息通信相关API、设备影子相关API和规则引擎相关API失败时。(规则引擎相关API调用失败错误码,请见本文档下一章节。) 错误码 描述 iot.messagebroker.CreateTopicRouteFailed 创建Topic之间消息路由失败。 请确认入参信息正确,然后重试。 iot.messagebroker.CreateTopicTemplateException 创建Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.CreateTopicTemplateFailed 创建Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DeleteTopicTemplateException 删除Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.DeleteTopicTemplateFailed 删除Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DestTopicNameArraySizeIsLarge 同一消息源Topic配置的路由目标Topic数量超过最大限制数。 一个源Topic最多可对应100个目标Topic。 iot.messagebroker.DeleteTopicRouteFailed 删除指定Topic间的路由失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DesireInfoInShadowMessageIsNotJson 设备影子中的desire信息不是JSON格式。 iot.messagebroker.DesireValueIsNullInShadowMessage 设备影子中的desire信息值为空。 iot.messagebroker.ElementKeyOrValueIsNullInDesire desire信息包含有空的属性标识符或者属性值。 iot.messagebroker.ElementKeyOrValueIsNullInReport report信息包含有空的属性标识符或者属性值。 iot.messagebroker.HALFCONN 由于设备为半连接状态导致失败。 iot.messagebroker.InvalidFormattedSrcTopicName 消息源Topic名称格式错误。 可在控制台设备详情页的Topic列表下查看设备的Topic。 iot.messagebroker.InvalidFormattedTopicName Topic格式错误。 可在控制台设备详情页的Topic列表下查看设备的Topic。 iot.messagebroker.InvalidFormattedTopicTemplateId Topic类ID格式错误。 可调用QueryProductTopic查看TopicId。 iot.messagebroker.InvalidTimeoutValue 超时时间参数设置有误。 请参见相关API文档查看时间设置方法。 iot.messagebroker.InvalidTopicTemplateOperationValue Topic类的操作权限值错误。操作权限取值: SUB:订阅。 PUB:发布。 ALL:发布和订阅。 iot.messagebroker.InvalidVersionValueInShadowMessage 设备影子中的version值错误。 iot.messagebroker.MethodValueIsNotUpdate 设备影子中的method信息值不是update。 iot.messagebroker.MessageContentIsNotBase64Encode 消息内容没有经过base64编码。 iot.messagebroker.NoneElementInDesire desire信息中没有属性。 iot.messagebroker.NoneElementInReport report信息中没有属性。 iot.messagebroker.NoneElementDestTopicNameInArray 目标Topic列表中没有元素。 iot.messagebroker.NotFoundDesireInShadowMessage 设备影子的state信息中没有desire信息。 iot.messagebroker.NotFoundMethodInShadowMessage 设备影子没有method信息。 iot.messagebroker.NotFoundReportInShadowMessage 设备影子中没有report信息。 iot.messagebroker.NotFoundStateInShadowMessage 设备影子中没有state信息。 iot.messagebroker.NotFoundVersionOrNullVersionValue 缺少version信息或者version值为空。 iot.messagebroker.NotMatchedProductKeyWithSrcTopicOwner 消息源Topic对应的产品ID不属于当前用户。 iot.messagebroker.NullMessageContent 消息内容不能为空。 iot.messagebroker.NullShadowMessage 设备影子内容不能为空。 iot.messagebroker.NullSrcTopicName 消息源Topic名称不能为空。 iot.messagebroker.NullTopicName Topic不能为空。 iot.messagebroker.NullTopicTemplateId Topic类ID不能为空。 iot.messagebroker.NullTopicTemplateOperation Topic类的操作权限不能为空。 iot.messagebroker.OFFLINE 由于设备离线导致失败。 iot.messagebroker.PublishMessageException 发送消息过程出现异常。 请确认入参信息正确,然后重试。 iot.messagebroker.PublishMessageFailed 发送消息失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryDeviceShadowActionError 查询设备影子失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryProductTopicListActionError 获取Topic类列表失败。 请确认入参信息正确,然后重试。 iot.messageborker.QueryTopicReverseRouteTableListActionError 获取消息反向路由列表(即消息源Topic列表)失败。 请确认入参信息正确,然后重试。 iot.messageborker.QueryTopicRouteTableListActionError 获取消息路由列表失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryTopicTemplateActionError 查询Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryTopicTemplateException 获取Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.RateLimit 由于限流导致失败。 请参见使用限制。 iot.messagebroker.ReportInShadowMessageIsNotJson 设备影子中的state信息中的report信息不是JSON格式。 iot.messagebroker.RrpcException RRPC发送消息过程出现异常。 请确认入参信息正确,然后重试。 iot.messagebroker.RrpcFailed RRPC发送消息失败。 请确认入参信息正确,然后重试。 iot.messagebroker.ShadowMessageIsNotJson 设备影子不是JSON格式。 iot.messagebroker.ShadowMessageLengthIsLarge 设备影子的长度超过最大限制。 设备影子文档的大小限制16 KB。 iot.messagebroker.TIMEOUT 由于超时导致失败。 iot.messagebroker.TooManyElementInDesire desire信息中包含的属性总数超过最大限定数。 设备影子JSON文档的属性数量限制为128。 iot.messagebroker.TooManyElementInReport report信息包含的属性总数超过限定最大数。 设备影子JSON文档的属性数量限制为128。 iot.messagebroker.TopicAlreadyFound 同一产品下Topic类名称重复。 iot.messagebroker.TopicTemplateCountExceedMax 产品的Topic类数量超过最大值。 一个产品最多可以定义50个Topic类。 iot.messagebroker.TopicTemplateIsNotFound Topic类不存在。 可调用QueryProductTopic查看产品的Topic类。 iot.messagebroker.UpdateDeviceShadowMessageFailed 更新设备影子失败。 请确认入参信息正确,然后重试。 iot.messagebroker.UpdateTopicTemplateException 更新Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.UpdateTopicTemplateFailed 更新Topic类失败。 请确认入参信息正确,然后重试。 规则相关错误码 以iot.rule和iot.ruleng开头的错误码,及少量iot.messagebroker开头的错误码,是规则引擎相关错误码。 提示出现异常或失败时,请确认入参信息正确,然后重试。 错误码 描述 iot.rule.CreateRuleException 创建规则过程发生异常。 请确认入参信息正确,然后重试。 iot.rule.DeleteRuleFailed 删除规则失败。 请确认入参信息正确,然后重试。 iot.rule.IncorrentRuleActionId 规则动作ID错误。 可调用ListRuleActions查看规则动作ID。 iot.rule.IncorrentRuleActionType 规则动作类型错误。 规则动作类型参数Type支持可选值: DATAHUB:DataHub ONS:消息队列(RokectMQ) MNS:消息服务 FC:函数计算 OTS:表格存储 说明 数据格式为二进制的规则(即规则的DataType参数是BINARY)不支持转发数据至OTS(表格存储)。 REPUBLISH:另一个物联网平台Topic。 iot.rule.IncorrentRuleId 规则ID错误。 iot.rule.NullForwardDestForRule 转发数据目的地不能为空。 Configuration中的具体配置方法,请参见CreateRuleAction。 iot.rule.NullSqlForRule 规则的SQL语句不能为空。 iot.rule.NotFoundRule 规则不存在。 请输入正确的规则ID (RuleId)。可调用ListRule查看账号下所有规则的RuleId。 iot.rule.NotFoundRuleAction 规则动作不存在。 请输入正确的规则动作ID (ActionId)。可调用ListRuleActions查看某个规则下的所有ActionId。 iot.rule.ParseRuleActionConfigError 无法正常解析规则动作的配置。 请确认入参信息正确,然后重试。 iot.rule.QueryRuleActionListError 查询规则动作列表失败。 请确认入参信息正确,然后重试。 iot.rule.QueryRulePageActionError 分页获取规则列表失败。 请确认入参信息正确,然后重试。 iot.rule.RuleActionIsAlreadyCreated 已存在相同的规则动作。 iot.rule.RuleCountExceedMax 规则总数超过最大限制数。 单账号最多可以设置1000条规则。 iot.rule.RuleNameIsAlreadyExisted 规则名称已经存在。 iot.rule.StartRuleFailed 启动规则失败。 请确认入参信息正确,然后重试。 iot.rule.StopRuleFailed 停止规则失败。 请确认入参信息正确,然后重试。 iot.rule.TooManyRuleAction 规则动作数量超过最大限制。 一条规则中转发数据的操作不能超过10个。 iot.rule.UpdateRuleFailed 更新规则失败。 请确认入参信息正确,然后重试。 iot.ruleng.CreateRuleActionFailed 创建规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.DeleteRuleActionFailed 删除规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.IncorrectType 应用规则的Topic类型错误。 TopicType支持的可选值: 0:系统Topic 1:自定义Topic 2:设备状态消息Topic iot.ruleng.IncorrectSysTopic 错误的系统Topic。 可在控制台设备详情页的Topic列表页签下查看正确的Topic。 iot.ruleng.InvalidRamRole 非法的RAM角色。 请登录RAM控制台查看角色信息。 iot.ruleng.QueryRuleActionFailed 获取规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.RuleActionConfigurationIsNotJson 规则动作配置不是JSON格式。 参数Configuration的值必须是正确的JSON格式。具体请参见CreateRuleAction。 iot.ruleng.RuleAlreadyIsStarted 规则是已启动状态。 iot.ruleng.NullRamRoleArn roleArn不能为空。 iot.ruleng.NullRamRoleName roleName不能为空。 iot.ruleng.NullRuleActionConfig 规则动作配置(参数Configuration)不能为空。 iot.ruleng.NullRuleActionType 规则动作类型(参数Type)不能为空。 iot.messagebroker.IncorrectRuleSql 规则的SQL配置错误。 请根据CreateRule说明配置SQL。 iot.messagebroker.QueryRuleConfigActionException 获取规则配置信息过程出现异常。 请确认入参信息正确,然后重试。 以下表格分别列举消息转发目标设置失败的特有错误码。 表 1. 目标为REPUBLISH(另一个IoT Topic)的错误码 错误码 描述 iot.messagebroker.InvalidFormattedTopicName Topic格式错误。 可在控制台设备详情页的Topic列表页签下查看正确的Topic格式。 iot.prod.NotExistedProduct 产品不存在。 请确认输入的ProductKey正确,并该产品属于当前阿里云账号。 iot.common.QueryProductActionError 查询产品失败。 请确认入参信息正确,然后重试。 iot.ruleng.IncorrectSysTopic 系统Topic错误。 可在控制台设备详情页的Topic列表页签下查看正确的Topic。 iot.messagebroker.NullTopicName Topic名称不能为空。 表 2. 目标为DATAHUB(DataHub)的错误码 错误码 描述 iot.ruleng.IncorrectRegionName regionName值错误。 iot.ruleng.NullProjectOfDatahub DataHub的projectName不能为空。 iot.ruleng.NullTopicInDatahubProject DataHub产品下的project中topicName不能为空。 iot.ruleng.EmptySchemaNameOfTopic 目标DataHub Topic的Schema的名称name值不能为空。 iot.ruleng.EmptySchemaTypeOfTopic 目标DataHub Topic的Schema的类型type值不能为空。 iot.ruleng.EmptySchemaValueOfTopic 目标DataHub Topic的Schema值value不能为空。 iot.ruleng.NullOrEmptySchemaOfTopic 目标DataHub Topic的Schema不能为空。 iot.ruleng.NotFoundProjectInDataHub DataHub中不存在此项目(project)。 请在DataHub中确认项目名称是否正确。 iot.ruleng.IncorrectSchemaValueOfTopic 目标DataHub Topic的Schema值错误。 表 3. 目标为OTS(表格存储)的错误码 错误码 描述 iot.ruleng.NullOtsInstanceName 表格存储的实例名称不能为空。 iot.ruleng.NullTableNameInOtsInstance 表格存储中实例的表名不能为空。 iot.ruleng.NullPrimaryKeyInOtsTable 表格存储中表的主键不能为空。 iot.ruleng.NullPrimaryKeyNameInOts 主键的名称不能为空。 iot.ruleng.NullPrimaryKeyValueInOts 主键的值不能为空。 iot.ruleng.IncorrectPrimaryKeyValueInOtsTable 表格存储中主键值错误。 请在表格存储中,查看您创建数据表时定义的主键。 表 4. 目标为MNS(消息服务)的错误码 错误码 描述 iot.ruleng.NullTopicNameInMns 消息服务中的主题不能为空。 iot.ruleng.NotFoundTopicInMns 消息服务中不存在此主题。 请在消息服务中,确认主题(Topic)名称。 iot.ruleng.QueryMnsTopicListActionError 获取消息服务主题列表失败。 请确认入参信息正确,然后重试。 表 5. 目标为FC(函数计算)的错误码 错误码 描述 iot.ruleng.NullServiceNameInFc 函数计算服务名称为空。 iot.ruleng.NullFunctionNameInFc 函数计算函数名称为空。 iot.ruleng.NotFoundServiceInFc 函数计算服务不存在。 请在函数计算中,确认正确的服务名称。 表 6. 目标为ONS(消息队列)的错误码 错误码 描述 iot.messagebroker.NullTopicName 消息队列中接收消息的Topic不能为空。 数据开发API相关错误码 错误码 描述 iot.dap.noServeJobExit 数据开发服务API对应的任务不存在。 iot.dap.serveApiPathRepetition 服务API接口地址重复,即传入ApiPath已存在。 iot.dap.serveApiInvalidParam 调用服务API的参数检查不通过。 iot.dap.serveApiPublishStatusError 请先通过测试后,再发布任务。 iot.dap.serveApiDeleteStatusError 已发布的任务不可删除。 iot.dap.serveApiPublishedNotEditable 已发布的任务不可编辑。 iot.dap.folderHasServeApiPublished 存在已发布的服务API,不可删除文件夹。 iot.dap.serveApiNoPublished 服务API不在发布状态,无法回滚。 iot.dap.duplicateTableNameError 资源表名称重复。 iot.dap.serveApiAlreadyPublished 服务API已发布。 iot.dap.serveApiPathIsEmpty 服务API接口地址不能为空。 iot.dap.serveApiSqlTemplateError SQL模板信息异常,请校验并更新后,再尝试调用服务。 iot.dap.serveApiSqlInvokeParamError SQL参数错误,类型与值不匹配。 iot.dap.syncStartPipelineError 任务启动失败。 iot.dap.methodTimeout 接口调用超时。

保持可爱mmm 2020-03-27 15:53:19 0 浏览量 回答数 0

问题

云监控业务日志的统计监控与报警

反向一觉 2019-12-01 21:25:43 1623 浏览量 回答数 0

问题

在panda DataFrame中交换和组列名

kun坤 2019-12-27 17:21:00 0 浏览量 回答数 1

回答

R解决方案 01 library(gdata)#use excel function library 02 A1<-read.xls("e:\data\all.xlsx") #import data 03 A2<-subset(A1,as.POSIXlt(Date)>=as.POSIXlt('2012-06-01')& as.POSIXlt(Date)<=as.POSIXlt('2012-06-30')) #filter by date 04 A3<- split(A2,A2$Code) #group by Code 05 A8<-list() 06 for(iin 1:length(A3)){ 07 A3[[i]][order(as.numeric(A3[[i]]$Date)),]#sort by Date in each group 08 A3[[i]]$INC<-with(A3[[i]],Close-c(0,Close[- length (Close)])) #add a column, increased price 09 if(nrow(A3[[i]])>0){ #add a column, continuous increased days 10 A3[[i]]$CID[[1]]<-1 11 for(j in 2:nrow(A3[[i]])){ 12 if(A3[[i]]$INC[[j]]>0 ){ 13 A3[[i]]$CID[[j]]<-A3[[i]]$CID[[j-1]]+1 14 }else{ 15 A3[[i]]$CID[[j]]<-0 16 } 17 } 18 } 19 if(max(A3[[i]]$CID)>=5){ #stock max CID is bigger than 5 20 A8[[length(A8)+1]]<-A3[[i]] 21 } 22 } 23 A9<-lapply(A8,function(x)x$Code[[1]]) #finally,stock code 01:启用Excel支持。要注意的是R对Excel的支持第三方的包l,需要先行下载安装,R对第三方包比较挑剔,找到一个兼容可能的不大容易 02:导入Excel的数据。可能是找来的Excel解析包不好用,这个过程大约需要8-10分钟,内存占用也比集算器多几百M,好在导入数据后内存就释放了。事实上R本身的运算速度还是比较快的,取数据库中的数据时会很好的体现这一点。 03,04:按时间过滤,并按Code分组。分组后的数据查看起来不易理解,点击右侧的变量看到的结果是这样的: 如果在控制台直接输入命令则相对好一些,如下: 05:A8<-list(),定义一个list类型的变量A8,它将用来存放连涨天数大于等于5的股票。 06-22:由于R不能像集算器那样方便的用~来操作每个分组,因此这里需要一个大循环,每次循环针对一个股票进行计算。 07:按日期排序。分组前就排序代码会更简单,但我考虑到最直观的思路是:分组前数据是混在一起的,看不出是否排序;分组后经过观察才发现顺序混乱,不排序则无法进行下一步的行间运算。 08:增加一个列INC,计算”当日收盘价”-“前一日收盘价”。R不支持行间运算,所以这里巧妙的将收盘价整体下移一行,再和原来的收盘价相减。代码是:Close-c(0,Close[- length (Close)])。 09-18:增加一个列CID,计算连涨天数。09行的if(nrow(A3[[i]])>0)是为了避免有些股票没数据(比如暂时停牌),否则后面会报空指针错误。10行的A3[[i]]$CID[[1]]<-1是为了赋初值和避免后面运算报空指针错误。集算器中不需要做类似的检查,看来它对非专业技术人员更友好些。11-17:计算连涨天数。代码虽然很多,其实算法同集算器完全一样。 19-21:过滤,如果某只股票最大的连涨天数大于等于5,则它就是需要的优质股票。代码虽然较多,其实算法和集算器完全一样。结果如下: 23:取出分组中的代码,A9<-lapply(A8,function(x) x$Code[[1]]),如下图: 一些体会: R和集算器凭借自身的能力都可以实现较复杂的股票分析。集算器的代码更简单易懂,避免了大部分的循环语句,数组越界等容易犯错的地方也做了些人性化的处理。基本上,会用基本的Excel公式应该就能用集算器来做股票分析了。 使用R来完成股票分析需要一定的编程技巧和数学知识,这样才能灵活运行R的各项功能。R还具备优秀的扩展性,比如有针对股票的第三方库函数和统计图;再比如完全可以自己写一个更高效的读取Excel的函数

xuning715 2019-12-02 01:12:13 0 浏览量 回答数 0

问题

MPP计算引擎 SELECT语法是什么?

nicenelly 2019-12-01 21:25:30 1617 浏览量 回答数 0

问题

如何对第三层的字段进行aggregate的group聚合

蛮大人123 2019-12-01 19:59:54 888 浏览量 回答数 1

回答

流处理,听起来很高大上啊,其实就是分块读取。有这么一些情况,有一个很大的几个G的文件,没办法一次处理,那么就分批次处理,一次处理1百万行,接着处理下1百万行,慢慢地总是能处理完的。 使用类似迭代器的方式 data=pd.read_csv(file, chunksize=1000000)for sub_df in data: print('do something in sub_df here') 1234索引 Series和DataFrame都是有索引的,索引的好处是快速定位,在涉及到两个Series或DataFrame时可以根据索引自动对齐,比如日期自动对齐,这样可以省去很多事。 缺失值 pd.isnull(obj)obj.isnull()12将字典转成数据框,并赋予列名,索引 DataFrame(data, columns=['col1','col2','col3'...], index = ['i1','i2','i3'...]) 12查看列名 DataFrame.columns 查看索引 DataFrame.index 重建索引 obj.reindex(['a','b','c','d','e'...], fill_value=0] 按给出的索引顺序重新排序,而不是替换索引。如果索引没有值,就用0填充 就地修改索引 data.index=data.index.map(str.upper)12345列顺序重排(也是重建索引) DataFrame.reindex[columns=['col1','col2','col3'...])` 也可以同时重建index和columns DataFrame.reindex[index=['a','b','c'...],columns=['col1','col2','col3'...])12345重建索引的快捷键 DataFrame.ix[['a','b','c'...],['col1','col2','col3'...]]1重命名轴索引 data.rename(index=str.title,columns=str.upper) 修改某个索引和列名,可以通过传入字典 data.rename(index={'old_index':'new_index'}, columns={'old_col':'new_col'}) 12345查看某一列 DataFrame['state'] 或 DataFrame.state1查看某一行 需要用到索引 DataFrame.ix['index_name']1添加或删除一列 DataFrame['new_col_name'] = 'char_or_number' 删除行 DataFrame.drop(['index1','index2'...]) 删除列 DataFrame.drop(['col1','col2'...],axis=1) 或 del DataFrame['col1']1234567DataFrame选择子集 类型 说明obj[val] 选择一列或多列obj.ix[val] 选择一行或多行obj.ix[:,val] 选择一列或多列obj.ix[val1,val2] 同时选择行和列reindx 对行和列重新索引icol,irow 根据整数位置选取单列或单行get_value,set_value 根据行标签和列标签选择单个值针对series obj[['a','b','c'...]]obj['b':'e']=512针对dataframe 选择多列 dataframe[['col1','col2'...]] 选择多行 dataframe[m:n] 条件筛选 dataframe[dataframe['col3'>5]] 选择子集 dataframe.ix[0:3,0:5]1234567891011dataframe和series的运算 会根据 index 和 columns 自动对齐然后进行运算,很方便啊 方法 说明add 加法sub 减法div 除法mul 乘法 没有数据的地方用0填充空值 df1.add(df2,fill_value=0) dataframe 与 series 的运算 dataframe - series 规则是: -------- v 指定轴方向 dataframe.sub(series,axis=0)规则是:-------- --- | | | | ----->| | | | | | | | | | | | -------- ---12345678910111213141516171819202122apply函数 f=lambda x:x.max()-x.min() 默认对每一列应用 dataframe.apply(f) 如果需要对每一行分组应用 dataframe.apply(f,axis=1)1234567排序和排名 默认根据index排序,axis = 1 则根据columns排序 dataframe.sort_index(axis=0, ascending=False) 根据值排序 dataframe.sort_index(by=['col1','col2'...]) 排名,给出的是rank值 series.rank(ascending=False) 如果出现重复值,则取平均秩次 在行或列上面的排名 dataframe.rank(axis=0)12345678910111213描述性统计 方法 说明count 计数describe 给出各列的常用统计量min,max 最大最小值argmin,argmax 最大最小值的索引位置(整数)idxmin,idxmax 最大最小值的索引值quantile 计算样本分位数sum,mean 对列求和,均值mediam 中位数mad 根据平均值计算平均绝对离差var,std 方差,标准差skew 偏度(三阶矩)Kurt 峰度(四阶矩)cumsum 累积和Cummins,cummax 累计组大致和累计最小值cumprod 累计积diff 一阶差分pct_change 计算百分数变化唯一值,值计数,成员资格 obj.unique()obj.value_count()obj.isin(['b','c'])123处理缺失值 过滤缺失值 只要有缺失值就丢弃这一行 dataframe.dropna() 要求全部为缺失才丢弃这一行 dataframe.dropna(how='all') 根据列来判断 dataframe.dropna(how='all',axis=1) 填充缺失值 1.用0填充 df.fillna(0) 2.不同的列用不同的值填充 df.fillna({1:0.5, 3:-1}) 3.用均值填充 df.fillna(df.mean()) 此时axis参数同前面, 123456789101112131415161718192021将列转成行索引 df.set_index(['col1','col2'...])1数据清洗,重塑 合并数据集 取 df1,df2 都有的部分,丢弃没有的 默认是inner的连接方式 pd.merge(df1,df2, how='inner') 如果df1,df2的连接字段名不同,则需要特别指定 pd.merge(df1,df2,left_on='l_key',right_on='r_key') 其他的连接方式有 left,right, outer等。 如果dataframe是多重索引,根据多个键进行合并 pd.merge(left, right, on=['key1','key2'],how = 'outer') 合并后如果有重复的列名,需要添加后缀 pd.merge(left, right, on='key1', suffixes=('_left','_right'))1234567891011121314索引上的合并 针对dataframe中的连接键不是列名,而是索引名的情况。 pd.merge(left, right, left_on = 'col_key', right_index=True) 即左边的key是列名,右边的key是index。 多重索引 pd.merge(left, right, left_on=['key1','key2'], right_index=True)123456dataframe的join方法 实现按索引合并。 其实这个join方法和数据库的join函数是以一样的理解 left.join(right, how='outer') 一次合并多个数据框 left.join([right1,right2],how='outer')123456轴向连接(更常用) 连接:concatenation 绑定:binding 堆叠:stacking列上的连接 np.concatenation([df1,df2],axis=1) #np包pd.concat([df1,df2], axis=1) #pd包 和R语言中的 cbind 是一样的 如果axis=0,则和 rbind 是一样的 索引对齐,没有的就为空 join='inner' 得到交集 pd.concat([df1,df2], axis=1, join='innner') keys 参数,还没看明白 ignore_index=True,如果只是简单的合并拼接而不考虑索引问题。 pd.concat([df1,df2],ignore_index=True)123456789101112131415合并重复数据 针对可能有索引全部或者部分重叠的两个数据集 填充因为合并时索引赵成的缺失值 where函数 where即if-else函数 np.where(isnull(a),b,a)12combine_first方法 如果a中值为空,就用b中的值填补 a[:-2].combine_first(b[2:]) combine_first函数即对数据打补丁,用df2的数据填充df1中的缺失值 df1.combine_first(df2)12345重塑层次化索引 stact:将数据转为长格式,即列旋转为行 unstack:转为宽格式,即将行旋转为列result=data.stack()result.unstack()12长格式转为宽格式 pivoted = data.pivot('date','item','value') 前两个参数分别是行和列的索引名,最后一个参数则是用来填充dataframe的数据列的列名。如果忽略最后一个参数,得到的dataframe会带有层次化的列。 123透视表 table = df.pivot_table(values=["Price","Quantity"], index=["Manager","Rep"], aggfunc=[np.sum,np.mean], margins=True)) values:需要对哪些字段应用函数 index:透视表的行索引(row) columns:透视表的列索引(column) aggfunc:应用什么函数 fill_value:空值填充 margins:添加汇总项 然后可以对透视表进行筛选 table.query('Manager == ["Debra Henley"]')table.query('Status == ["pending","won"]')123456789101112131415移除重复数据 判断是否重复 data.duplicated()` 移除重复数据 data.drop_duplicated() 对指定列判断是否存在重复值,然后删除重复数据 data.drop_duplicated(['key1'])123456789交叉表 是一种用于计算分组频率的特殊透视表. 注意,只对离散型的,分类型的,字符型的有用,连续型数据是不能计算频率这种东西的。 pd.crosstab(df.col1, df.col2, margins=True)1类似vlookup函数 利用函数或映射进行数据转换 1.首先定义一个字典 meat_to_animal={ 'bacon':'pig', 'pulled pork':'pig', 'honey ham':'cow' } 2.对某一列应用一个函数,或者字典,顺便根据这一列的结果创建新列 data['new_col']=data['food'].map(str.lower).map(meat_to_animal)123456789替换值 data.replace(-999,np.na) 多个值的替换 data.replace([-999,-1000],np.na) 对应替换 data.replace([-999,-1000],[np.na,0]) 对应替换也可以传入一个字典 data.replace({-999:np.na,-1000:0})123456789离散化 定义分割点 简单分割(等宽分箱) s=pd.Series(range(100))pd.cut(s, bins=10, labels=range(10)) bins=[20,40,60,80,100] 切割 cats = pd.cut(series,bins) 查看标签 cats.labels 查看水平(因子) cats.levels 区间计数 pd.value_count(cats) 自定义分区的标签 group_names=['youth','youngAdult','MiddleAge','Senior']pd.cut(ages,bins,labels=group_names)1234567891011121314151617181920212223分位数分割 data=np.random.randn(1000)pd.qcut(data,4) #四分位数 自定义分位数,包含端点 pd.qcut(data,[0,0.3,0.5,0.9,1])12345异常值 查看各个统计量 data.describe() 对某一列 col=data[3]col[np.abs(col)>3] 选出全部含有“超过3或-3的值的行 data[(np.abs(data)>3).any(1)] 异常值替换 data[np.abs(data)>3]=np.sign(data)*312345678910111213抽样 随机抽取k行 df.take(np.random.permutation(len(df))[:k]) 随机抽取k行,但是k可能大于df的行数 可以理解为过抽样了 df.take(np.random.randint(0,len(df),size=k))1234567数据摊平处理 相当于将类别属性转成因子类型,比如是否有车,这个字段有3个不同的值,有,没有,过段时间买,那么将会被编码成3个字段,有车,没车,过段时间买车,每个字段用0-1二值填充变成数值型。 对摊平的数据列增加前缀 dummies = pd.get_dummies(df['key'],prefix='key') 将摊平产生的数据列拼接回去 df[['data1']].join(dummies)12345字符串操作 拆分 strings.split(',') 根据正则表达式切分 re.split('s+',strings) 连接 'a'+'b'+'c'...或者'+'.join(series) 判断是否存在 's' in strings`strings.find('s') 计数 strings.count(',') 替换 strings.replace('old','new') 去除空白字符 s.strip()12345678910111213141516171819202122232425正则表达式 正则表达式需要先编译匹配模式,然后才去匹配查找,这样能节省大量的CPU时间。 re.complie:编译 findall:匹配所有 search:只返回第一个匹配项的起始和结束地址 match:值匹配字符串的首部 sub:匹配替换,如果找到就替换 原始字符串 strings = 'sdf@153.com,dste@qq.com,sor@gmail.com' 编译匹配模式,IGNORECASE可以在使用的时候对大小写不敏感 pattern = r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'regex = re.compile(pattern,flags=re.IGNORECASE) 匹配所有 regex.findall(strings) 使用search m = regex.search(strings) #获取匹配的地址strings[m.start():m.end()] 匹配替换 regex.sub('new_string', strings)12345678910111213141516根据模式再切分 将模式切分,也就是将匹配到的进一步切分,通过pattern中的括号实现. pattern = r'([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})'regex = re.compile(pattern)regex.findall(strings) 如果使用match m=regex.match(string)m.groups() 效果是这样的 suzyu123@163.com --> [(suzyu123, 163, com)] 获取 list-tuple 其中的某一列 matches.get(i)12345678910111213分组聚合,计算 group_by技术 根据多个索引分组,然后计算均值 means = df['data1'].groupby([df['index1'],df['index2']).mean() 展开成透视表格式 means.unstack()12345分组后价将片段做成一个字典 pieces = dict(list(df.groupby('index1'))) pieces['b']123groupby默认是对列(axis=0)分组,也可以在行(axis=1)上分组 语法糖,groupby的快捷函数 df.groupby('index1')['col_names']df.groupby('index1')[['col_names']] 是下面代码的语法糖 df['col_names'].groupby(df['index1']) df.groupby(['index1','index2'])['col_names'].mean()1234567通过字典或series进行分组 people = DataFrame(np.random.randn(5, 5), columns=['a', 'b', 'c', 'd', 'e'], index=['Joe', 'Steve', 'Wes', 'Jim','Travis']) 选择部分设为na people.ix[2:3,['b','c']]=np.na mapping = {'a': 'red', 'b': 'red', 'c': 'blue', 'd': 'blue', 'e': 'red', 'f' : 'orange'} people.groupby(mapping,axis=1).sum()1234567891011通过函数进行分组 根据索引的长度进行分组 people.groupby(len).sum()12数据聚合 使用自定义函数 对所有的数据列使用自定义函数 df.groupby('index1').agg(myfunc) 使用系统函数 df.groupby('index1')['data1']describe()12345根据列分组应用多个函数 分组 grouped = df.groupby(['col1','col2']) 选择多列,对每一列应用多个函数 grouped['data1','data2'...].agg(['mean','std','myfunc'])12345对不同列使用不同的函数 grouped = df.groupby(['col1','col2']) 传入一个字典,对不同的列使用不同的函数 不同的列可以应用不同数量的函数 grouped.agg({'data1':['min','max','mean','std'], 'data2':'sum'}) 123456分组计算后重命名列名 grouped = df.groupby(['col1','col2']) grouped.agg({'data1':[('min','max','mean','std'),('d_min','d_max','d_mean','d_std')], 'data2':'sum'}) 1234返回的聚合数据不要索引 df.groupby(['sex','smoker'], as_index=False).mean()1分组计算结果添加前缀 对计算后的列名添加前缀 df.groupby('index1').mean().add_prefix('mean_')12将分组计算后的值替换到原数据框 将函数应用到各分组,再将分组计算的结果代换原数据框的值 也可以使用自定义函数 df.groupby(['index1','index2'...]).transform(np.mean)123更一般化的apply函数 df.groupby(['col1','col2'...]).apply(myfunc) df.groupby(['col1','col2'...]).apply(['min','max','mean','std'])123禁用分组键 分组键会跟原始对象的索引共同构成结果对象中的层次化索引 df.groupby('smoker', group_keys=False).apply(mean)1分组索引转成df的列 某些情况下,groupby的as_index=False参数并没有什么用,得到的还是一个series,这种情况一般是尽管分组了,但是计算需要涉及几列,最后得到的还是series,series的index是层次化索引。这里将series转成dataframe,series的层次化索引转成dataframe的列。 def fmean(df): """需要用两列才能计算最后的结果""" skus=len(df['sku'].unique()) sums=df['salecount'].sum() return sums/skus 尽管禁用分组键,得到的还是series salemean=data.groupby(by=['season','syear','smonth'],as_index=False).apply(fmean) 将series转成dataframe,顺便设置索引 sub_df = pd.DataFrame(salemean.index.tolist(),columns=salemean.index.names,index=salemean.index) 将groupby的结果和sub_df合并 sub_df['salemean']=salemean12345678910111213桶分析与分位数 对数据切分段,然后对每一分段应用函数 frame = DataFrame({'col1':np.random.randn(1000), 'col2':np.random.randn(1000)}) 数据分段,创建分段用的因子 返回每一元素是属于哪一分割区间 factor = pd.cut(frame.col1, 4) 分组计算,然后转成数据框形式 grouped = frame.col2.groupby(factor)grouped.apply(myfunc).unstack()12345678910用分组的均值填充缺失值 自定义函数 fill_mean= lambda x:x.fillna(x.mean()) 分组填充 df.groupby(group_key).apply(fill_mean)12345分组后不同的数据替换不同的值 定义字典 fill_value = {'east':0.5, 'west':-1} 定义函数 fill_func = lambda x:x.fillna(fill_value(x.name)) 分组填充 df.groupby(['index1','index2'...]).apply(fill_func)12345678sql操作 有时候觉得pandas很方便,但是有时候却很麻烦,不如SQL方便。因此pandas中也有一些例子,用pandas实现SQL的功能,简单的就不说了,下面说些复杂点的操作。 之所以说这个复杂的语句,是因为不想将这些数据操作分写在不同的语句中,而是从头到尾连续编码实现一个功能。 SQL复杂操作用到的主要函数是assign,简单说其实和join的功能是一样的,根据df1,df2的索引值来将df2拼接到df1上。 两个函数是query,也听方便的。 有一批销量数据,筛选出那些有2个月以上的销量产品的数据,说白了就是剔除那些新上市产品的数据 方法是先统计每个产品的数据量,然后选出那些数据量>2的产品,再在数据表中选择这些产品 sku smonth a 1 a 2 a 3 a 4 b 5 b 6 b 7 b 8 c 9 c 10 按sku分组,统计smonth的次数,拼接到salecount中,然后查询cnt>2的 salecount.assign(cnt=salecount.groupby(['sku'])['smonth'].count()).query('cnt>2')

xuning715 2019-12-02 01:10:39 0 浏览量 回答数 0

回答

select a.artcile_title,count(c.comments_id) from article a left join comments c on a.article_id = c.article_id group by a.artcile_title 基本上就是这个样子。如果你的数据很大,那么所有的记录都输出消耗起码是两张表各进行一次全表扫描,最多comments有索引走全索引扫描来统计个数。 ######为了避免多表查询,可以在article表加一个字段,comment_total 评论总数,即对该篇文章有评论,计数加1;删除评论,则计数减一。 ###### 总结一下上面两位同学 1.关联查询+索引 2.数据冗余 ######上redis吧###### 1.article,comments关联查询+索引; 2.增加个中间模型——若comments数据量过大,可以先将其按article_id分组汇总评论个数,然后article与结果关联查询,从而避免大表关联,结构也更加平衡。 ###### 如果comments表记录很多,可以试着这么写 select a.article_id,a.artcile_title,a.content,a.comments,c.cn from article a left join (select count(comments_id) as cn,article_id from comments group by article_id) c on c.article_id = a.article_id

kun坤 2020-06-06 16:51:32 0 浏览量 回答数 0

回答

ReDBA专家门诊一期:索引与sql优化 有个问题:分类表TQueCategory,问题表TQuestion(T-SQL) CREATE TABLE TQueCategory ( ID INT IDENTITY(1,1) PRIMARY KEY,        --问题分类ID NAME VARCHAR(20)        --问题分类名称 ) CREATE TABLE TQuestion ( ID INT IDENTITY(1,1) PRIMARY KEY,        --问题ID CateID INT NOT NULL,        --问题分类ID TITLE VARCHAR(50),        --问题标题 CONTENT VARCHAR(500)        --问题内容 ) 当前要统计某个分类下的问题数,有两种方式: 1.每次统计,在TQuestion通过CateID进行分组统计 SELECT CateID,COUNT(1) AS QueNum FROM TQuestion GROUP BY CateID WHERE 1=1 2.在TQueCategory表增加字段QueNum,用于标识该分类下的问题数量 ALTER TABLE TQueCategory ADD QueNum INT SELECT CateID,QueNum FROM TQueCategory 问:在哪种业务应用场景下采用上面哪种方式性能比较好,为什么? ------------------------- 回13楼玄惭的帖子 “最后建议不要在数据库中使用外键,让应用程序来保证。 ” 这个不敢苟同,用不用外键,这个还是得看具体的业务环境吧,不能一刀切。 这篇博文的讨论不错。 《数据库设计中一个矛盾:数据库外键,用还是不用?你怎么看.?》 www点cnblogs点com/chenkai/archive/2009/11/11/1601193.html

原远 2019-12-02 01:16:13 0 浏览量 回答数 0

问题

MPP计算引擎 SELECT语法是什么?

nicenelly 2019-12-01 21:10:51 1381 浏览量 回答数 0

问题

数据聚合分组:新一代系统监控的核心功能

doudou1 2019-12-01 20:55:20 8687 浏览量 回答数 3
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播