标签: aggregate-functions

如何将sql聚合函数与不同更清晰的组合?

我最近一直在重复遇到以下情况,要么我需要将MAX()或SUM()应用于表中的一列,但我需要为其他列设置DISTINCT值.

例如,请考虑下表和关联列,这些列表示StackOverflow登录的详细信息.

SoUserLogins(OpenIdToken,Name,IpAdress,LoginTimeStamp,QuestionsAsked)

我可能想要一个包含用户及其上次登录的结果集.

SELECT DISTINCT
  OpenIdToken,
  MAX(LoginTimeStamp)
INTO #tmpLastLogin
FROM SoUserLogins
GROUP BY OpenIdToken
Run Code Online (Sandbox Code Playgroud)

但是我需要来自其他列的不同值.我将把它包装在一个公用表表达式(CTE)中,因为我将在以后使用它,并且不想要清理另一个临时表.

;WITH tmpLastLogin_CTE AS (
SELECT DISTINCT
  SOL.OpenIdToken, SOL.Name, SOL.IpAdress, SOL.QuestionsAsked
  TTL.LastLogin
FROM SoUserLogins SOL
JOIN #tmpLastLogin TLL ON SOL.OpenIdToken = TLL.OpenIdToken
)
--Extra SQL using tmpLastLogin_CTE goes here
Run Code Online (Sandbox Code Playgroud)

您可以在上面的代码中将MAX(LoginTimeStamp)更改为SUM(QuestionsAsked),并进行一些额外的调整以查看类似的示例.

我的问题是,是否有更清洁或更优雅的方式来处理这些情况?

我正在使用SQL Server.

sql sql-server distinct aggregate-functions

1
推荐指数
1
解决办法
4563
查看次数

oracle sql计数多列

我想计算在sql中具有特定值的列数.例:

A B C D E
1 2 1 2 2
Run Code Online (Sandbox Code Playgroud)

我如何计算有3列的值为2.

sql oracle aggregate-functions

1
推荐指数
1
解决办法
1418
查看次数

php数学问题

我有一个db表,其中包含一行产品数量.我想创建一个循环,为我计算所有金额的总和.

$results = mysql_query("SELECT * 
                         FROM prod");

while($info = mysql_fetch_array($results)) {    
  $amount = $info['amount'];
}
Run Code Online (Sandbox Code Playgroud)

amount是每个产品成本的变量.我希望得到所有变量的总和 - 我怎么能这样做?

php mysql sql aggregate-functions

1
推荐指数
1
解决办法
125
查看次数

使用SQL聚合和计算统计信息

我有射击游戏,用户在一周内相互竞争,积累最多积分.我想写一个聚合来自镜头表的统计数据的查询.这里的表格和关系是:

  • 用户有很多competition_periods
  • competition_period属于用户
  • competition_period有很多镜头
  • shot属于competition_period

在镜头表中,我有以下字段可供使用:

  • 结果 - >字符串值:WON,LOST或TIED
  • amount_won - >整数值:例如,-100,0,2000等.

对于每个用户,我想返回一个带有以下聚合统计数据的结果集:

  • won_count
  • lost_count
  • tied_count
  • total_shots_count(won_count + lost_count + tied_count)
  • total_amount_won(amount_won的总和)
  • avg_amount_won_per_shot(total_amount_won/total_shots_count)

我现在已经在这个查询上工作了几个小时,但没有取得多大进展.统计功能让我兴奋不已.一位朋友建议我尝试在名为shot_records的新虚拟表中返回结果.

mysql sql aggregate-functions

1
推荐指数
1
解决办法
583
查看次数

Jooq distinct 或 countDistinct 多于一列

我发现Factory类中的distinct函数只接受一个参数

public static AggregateFunction<Integer> countDistinct(Field<?> field);
Run Code Online (Sandbox Code Playgroud)

并且没有类似的功能 distinct(Field... fields)

我想表达这样的 SQL 语句:

select c1, count(distinct c2,c3) from t1 group by c1;
Run Code Online (Sandbox Code Playgroud)

PS:有一个非 dsl api: SelectQuery.setDistinct(true),但它会“区分”所有列,这不是我想要的。

java mysql distinct aggregate-functions jooq

1
推荐指数
1
解决办法
2737
查看次数

为什么AVG(x)给出的答案不同于AVR((isnull(x,0))?

X是具有数值和空值的混合的列.

我不明白为什么将空值视为0会改变AVG值的结果.

不应该这样,

(2 + null + 2) / 3 = 2 -- with null value

(2 + 0 + 2) / 3 = 2     -- no null value
Run Code Online (Sandbox Code Playgroud)

sql null aggregate-functions

1
推荐指数
1
解决办法
178
查看次数

与 SUM() 等效的函数,用于 SQL 报告中的乘法

我正在寻找以下功能或解决方案:

对于 SQL Reporting 中的图表,我需要将 A 列中的值相乘。为了求和,我将=SUM(COLUMN_A)用于图表。但是我可以用什么来乘法 - 到目前为止我无法找到解决方案?

目前我正在计算堆积列的值如下:

=ROUND(SUM(Fields!Value_Is.Value)/SUM(Fields!StartValue.Value),3)
Run Code Online (Sandbox Code Playgroud)

而不是 SUM 我需要一些东西来乘以这些值。类似的东西:

=ROUND(MULTIPLY(Fields!Value_Is.Value)/MULTIPLY(Fields!StartValue.Value),3)
Run Code Online (Sandbox Code Playgroud)

编辑#1

好的,试图让这件事运行起来。图表的表达式如下所示:

=Exp(Sum(Log(IIf(Fields!Menge_Ist.Value = 0, 10^-306, Fields!Menge_Ist.Value)))) / Exp(Sum(Log(IIf(Fields!Startmenge.Value = 0, 10^-306, Fields!Startmenge.Value))))
Run Code Online (Sandbox Code Playgroud)

如果我手动计算我的“需求”,我必须得到以下结果:

需要的结果

在我的 SQL 报告中,我得到以下结果:

在此处输入图片说明

为方便起见,这些是原始值:

在此处输入图片说明

并且您可以按 CW、CQ 或 CY 对图表进行分组(第一张图片中的值是 FertStufe 原始值的聚合总和值)

编辑#2

尝试了您的表达式,结果如下: 在此处输入图片说明

只想说清楚:

列中的值

=Value_IS / Start_Value
Run Code Online (Sandbox Code Playgroud)

在第一张图片中彼此相乘

0,9947 x 1,0000 x 0,59401 = 0,58573

扩散日历周 44 和

起始值:1900,00 值是:1890,00 == 产量:0,99474

Waffer unbestrahlt Calenderweek 44 Sums

起始值:620,00 值是:620,00 == yield 1,0000

Pellet Calenderweek 44 Sums

起始值:271,00 值是:160,00 …

multiplication aggregate-functions reporting-services ssrs-2008

1
推荐指数
1
解决办法
3188
查看次数

按聚合排序的密码顺序

我需要在查询期间聚合数据,然后按此数据排序。

根据密码文档:

如果要使用聚合对结果集进行排序,则必须将聚合包含在要在 ORDER BY 中使用的 RETURN 中。

我有以下密码查询:

START profile=node(31) MATCH (profile)-[r:ROLE]->(story)
WHERE r.role="LEADER" and story.status="PRIVATE" 
WITH story MATCH (story)<-[r?:RATED]-() 
RETURN distinct story ,sum(r.rate) as rate ORDER BY rate DESCENDING
Run Code Online (Sandbox Code Playgroud)

上面的查询工作正常,问题是我必须在我的结果集中包含sum(r.rate)

当查询响应应该是故事列表/页面时,我通过存储库使用Cypherdsl(我的存储库扩展了 CypherDslRepository )...

我可以使用按聚合函数排序而不将其包含在结果集中吗?
有什么解决方法吗?

谢谢。

sql-order-by aggregate-functions neo4j cypher

1
推荐指数
1
解决办法
626
查看次数

sql查询运行余额

我还是sql的新手,我需要你的帮助,我有一张看起来像这样的桌子

ses_date          trx_no        amount
02-04-2014       27487776I      1000
03-05-2014       27485776Y      -500
01-02-2014       65474645H      4500
09-01-2014       65474656D     -3400

我需要这样的输出

ses_date        trx_no        amount   Debit     Credit        Balance
02-04-2014       27487776I      1000     0.00      1000.00       1000
03-05-2014       27485776Y      -500    -500       0.00          500
01-02-2014       65474645H      4500    0.00       4500.00       5000
09-01-2014       65474656D     -3400    -3400.00   0.00          1600

就像一个帐户的声明,但在我自己的情况下,我没有单独借记和贷记,他们在一起.

非常感谢您的帮助和支持,您是最棒的.我的DBMS是microsoft SQL server 2008.我尝试使用此查询

SELECT ses_date, trx_no, amount, 
  CASE WHEN amount<0 THEN amount ELSE 0 END debit,
  CASE WHEN amount>0 THEN amount ELSE 0 END credit,
  (SELECT SUM(amount) FROM mytable a WHERE …
Run Code Online (Sandbox Code Playgroud)

sql aggregate-functions sql-server-2008

1
推荐指数
1
解决办法
1092
查看次数

Oracle:对聚合函数应用条件,而不是对SQL语句的所有行应用条件

我想为Oracle表计算select语句的最大值,而不是基于查询返回的所有行,而是基于这些行的子集的条件.

我将尝试用一个例子更好地解释:

ID | NAME | AGE | COMPANY
 1 | Alex | 28  | A
 2 | Alan | 22  | A
 3 | Bob  | 21  | B
 4 | Carl | 20  | C 
 5 | Dave | 24  | C
 6 | Eric | 26  | C
 7 | Matt | 33  | D
Run Code Online (Sandbox Code Playgroud)

我想获得每个25岁以下公司的最大年龄,但我也想计算每家公司的总人数.所以,我想要这个结果:

COMPANY | DEPENDENTS |  MAX_UNDER_25
   A    |     2      |      22
   B    |     1      |      21
   C    |     3      |      24
   D …
Run Code Online (Sandbox Code Playgroud)

sql oracle aggregate-functions

1
推荐指数
1
解决办法
50
查看次数