Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL聚合分数

SQL聚合分数
EN

Stack Overflow用户
提问于 2019-10-03 18:57:10
回答 2查看 492关注 0票数 1

我有一张有曼城和ComplaintType的桌子。

我正在尝试创建一个具有以下计算量的规范化列:

(伪)选择特定城市中特定类型的数量/(特定城市中所有投诉的数量)

我目前有以下SQL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT City AS city_name, ComplaintType AS complaint_type, 
    count(*) / (SELECT count(City) FROM data GROUP BY City) AS complaint_frac,
    count(*) AS count_freq,
    (SELECT count(City) FROM data GROUP BY City) AS count_city
FROM data
GROUP BY City, ComplaintType
ORDER BY complaint_frac DESC

这给了我下表:

城市中的投诉总数(count_city)是不正确的。但是,当我自己运行count_city查询时,计数是正确的,并给出了以下输出:

如何正确地将city_count与按城市分列的x投诉数关联,以便计算正确的分数?

冷硬数例子:

布朗克斯&热水= 79690

布朗克斯(投诉总数)= 579363

complaint_frac = 79690 / 579363 = 0.13754761695

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-03 19:07:57

将主表中的subquery关联起来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT City AS city_name, ComplaintType AS complaint_type, 
    count(*) / (SELECT count(City) FROM data GROUP BY City) AS complaint_frac,
    count(*) AS count_freq,
    (SELECT count(d1.City) FROM data d1 WHERE d1.City = d2.City GROUP BY d1.City) AS count_city
FROM data d2
GROUP BY City, ComplaintType
ORDER BY complaint_frac DESC
票数 0
EN

Stack Overflow用户

发布于 2019-10-03 19:50:38

为此您不需要子查询,至少在MySQL 8+中是这样;窗口函数可以完成以下工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT City AS city_name, ComplaintType AS complaint_type,
       count(*) / sum(count(*)) over (partition by city) as complaint_frac,
       count(*) as count_freq,
       sum(count(*)) over (partition by city) as count_city 
FROM data
GROUP BY City, ComplaintType
ORDER BY complaint_frac DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58229350

复制
相关文章
sql聚合函数_SQL聚合函数
SQL Aggregate Functions basically operate on multiple columns to perform the operations and serve to represent the output as an entity representing the operation executed.
全栈程序员站长
2022/06/24
2.3K0
sql聚合函数_SQL聚合函数
SQL聚合函数
其中,column_name 是要计算总和的列名,table_name 是要查询的表名。
堕落飞鸟
2023/05/10
9830
SQL 聚合查询
这看上去是个幼稚的问题,但我们还是一步步思考一下。数据以行为粒度存储,最简单的 SQL 语句是 select * from test,拿到的是整个二维表明细,但仅做到这一点远远不够,出于以下两个目的,需要 SQL 提供聚合函数:
黄子毅
2022/03/15
2.4K0
SQL聚合函数 LIST
一个简单的LIST(或LIST ALL)返回一个字符串,其中包含一个逗号分隔的列表,该列表由所选行中string-expr的所有值组成。 其中string-expr为空字符串(")的行由逗号分隔列表中的占位符逗号表示。 string-expr为NULL的行不包含在逗号分隔的列表中。 如果只有一个string-expr值,并且是空字符串("),LIST返回空字符串。
用户7741497
2022/03/27
2K0
SQL聚合函数 MAX
MAX聚合函数返回表达式的最大值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。
用户7741497
2022/03/27
1.2K0
SQL聚合函数 %DLIST
%DLIST聚合函数返回一个ObjectScript %List结构,其中包含指定列中的值作为列表元素。
用户7741497
2022/03/27
1.2K0
SQL聚合函数 MIN
MIN聚合函数返回表达式的最小值(最小值)。通常,表达式是查询返回的多行中的字段名称(或包含一个或多个字段名称的表达式)。
用户7741497
2022/03/27
1.3K0
SQL聚合函数 COUNT
COUNT可以在引用表或视图的SELECT查询或子查询中使用。 COUNT可以在SELECT列表或HAVING子句中与普通字段值一起出现。
用户7741497
2022/03/27
3.8K1
SQL聚合函数 AVG
AVG返回NUMERIC或DOUBLE数据类型。 如果expression是DOUBLE类型,AVG返回DOUBLE; 否则,它返回NUMERIC。
用户7741497
2022/03/27
3.3K1
SQL聚合函数 SUM
SUM返回与expression相同的数据类型,但有如下异常:TINYINT、SMALLINT和INTEGER返回的数据类型都是INTEGER。
用户7741497
2022/03/27
1.4K0
SQL聚合函数 XMLAGG
XMLAGG聚合函数返回由string-expr中的所有值组成的串接字符串。 返回值的数据类型为VARCHAR,默认长度为4096。
用户7741497
2022/03/27
1.3K0
SQL练习笔记二:分数排名
编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
用户6184845
2021/01/04
8560
SQL练习笔记二:分数排名
sql 聚合函数嵌套使用[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151848.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
1.4K0
sql 聚合函数嵌套使用[通俗易懂]
sql 聚合函数有哪些
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151864.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
6930
SQL聚合函数「建议收藏」
一、知识点 聚合函数对组执行计算并返回每个组唯一的值。GROUP BY子句通常与聚合函数一起用于统计数据。GROUP BY子句将行排列成组,聚合函数返回每个组的统计量。 常用的聚合函数有:COUNT(),SUM(),AVG(),MIN(),MAX()。 COUNT(),其作用主要是返回每个组的行数,也会返回有NULL值的列,可用于数字和字符列。 SUM(),主要用于返回表达式中所有的总和,忽略NULL值,仅用于数字列。 AVG(),返回表达式所有的平均值,仅用于数字列并且自动忽略NULL值。 MIN(),返回表达式中的最小值,忽略NULL值,可用于数字、字符和日期时间列。 MAX(),返回表达式中的最大值,忽略NULL值,可用于数字、字符和日期时间列。 二、案例分享 1.用count()返回课程数量。并查询课程进行对比。
全栈程序员站长
2022/06/24
8860
SQL聚合函数「建议收藏」
【T-SQL】分布抽取部分数据
好吧,我确实不知道该怎么起这个标题,整了一个“分布”,感觉还有点高档,其实没啥技术含量,看完你就知道了。情况是这样,刚刚接到一个临时任务,需要让几个营业点的销售数据【变】少一点,就是在ERP的相关报表中,查询出来的数据要在指定区间,说白了就是那什么~你懂的,某些同行应该对这种任务很熟悉了,而有些同行可能正在或即将面临这样的任务,希望此文能提供一点思路。
AhDung
2018/09/13
7590
【SQL】CLR聚合函数什么鬼
之前写过一个合并字符串的CLR聚合函数,基本是照抄MS的示例,外加了一些处理,已经投入使用很长时间,没什么问题也就没怎么研究,近日想改造一下,遇到一些问题,遂捣鼓一番,有些心得,记录如下。
AhDung
2018/09/13
7580
性能优化总结(二):聚合SQL
    本篇主要讲如何使用一句较复杂的SQL来加载整个聚合对象,以达到最小化数据库连接次数。主要是解释其中的原理。 LazyLoad及其缺点     相信越来越多的人已经开始使用富领域对象进行领域/业
用户1172223
2018/01/26
8310
优化OEA中的聚合SQL
    之前写过几篇关于聚合对象SQL的文章,讲的是如果设计框架,使用一句SQL语句来加载整个聚合对象树中的所有数据。相关内容,参见:《性能优化总结(二):聚合SQL》、《性能优化总结(三):聚合SQL在GIX4中的应用》。由于没有使用其它的ORM框架,当时项目组决定做聚合SQL,主要是为了减少SQL查询的次数,来提升部分模块的性能。现在看来,当时虽然达到了这个目标,但是聚合SQL的API却不简单,使用极为不便。至今,项目组中的其它人也不会使用。所以,这次我们决定把聚合SQL的API使用再次进行封装,以达到
用户1172223
2018/01/29
1.6K0
优化OEA中的聚合SQL
SQL中的聚合函数介绍
如果想要把null当做0,那么可以使用IsNull函数把null转换成0,语法如下:
全栈程序员站长
2022/06/24
2.2K0
SQL中的聚合函数介绍

相似问题

考虑分数的弹性搜索聚合

10

SQL分数排名

41

聚合物组分数据绑定?

47

嵌套/分数对象的维模型聚合

11

SQL聚合

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文