我最近一直在重复遇到以下情况,要么我需要将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.
我有一个db表,其中包含一行产品数量.我想创建一个循环,为我计算所有金额的总和.
$results = mysql_query("SELECT *
FROM prod");
while($info = mysql_fetch_array($results)) {
$amount = $info['amount'];
}
Run Code Online (Sandbox Code Playgroud)
amount是每个产品成本的变量.我希望得到所有变量的总和 - 我怎么能这样做?
我有射击游戏,用户在一周内相互竞争,积累最多积分.我想写一个聚合来自镜头表的统计数据的查询.这里的表格和关系是:
在镜头表中,我有以下字段可供使用:
对于每个用户,我想返回一个带有以下聚合统计数据的结果集:
我现在已经在这个查询上工作了几个小时,但没有取得多大进展.统计功能让我兴奋不已.一位朋友建议我尝试在名为shot_records的新虚拟表中返回结果.
我发现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),但它会“区分”所有列,这不是我想要的。
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 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
我需要在查询期间聚合数据,然后按此数据排序。
根据密码文档:
如果要使用聚合对结果集进行排序,则必须将聚合包含在要在 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的新手,我需要你的帮助,我有一张看起来像这样的桌子
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) 我想为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)