我正在寻找一种方法将不同行的字符串聚合成一行.我想在很多不同的地方做这个,所以有一个功能来促进这将是很好的.我尝试使用COALESCE和的解决方案FOR XML,但他们只是不为我削减它.
字符串聚合会执行以下操作:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Run Code Online (Sandbox Code Playgroud)
我已经看过CLR定义的聚合函数作为替代COALESCE和FOR XML,但显然SQL Azure 不支持CLR定义的东西,这对我来说很痛苦因为我知道能够使用它会解决很多问题.我的问题.
是否有任何可能的解决方法,或类似的最佳方法(可能不如CLR那样最优,但嘿,我会采取我能得到的)我可以用来聚合我的东西?
我试图LISTAGG在Oracle中使用该功能.我想只获得该列的不同值.有没有一种方法可以在不创建函数或过程的情况下获得不同的值?
col1 col2 Created_by 1 2 Smith 1 2 John 1 3 Ajay 1 4 Ram 1 5 Jack
我需要选择col1和LISTAGGcol2(不考虑第3列).当我这样做时,我得到这样的结果LISTAGG:[2,2,3,4,5]
我需要在这里删除重复的'2'; 我只需要col2对col1的不同值.
我有一个我正在查询的视图,看起来像这样:
Run Code Online (Sandbox Code Playgroud)BuildingName PollNumber ------------ ---------- Foo Centre 12 Foo Centre 13 Foo Centre 14 Bar Hall 15 Bar Hall 16 Baz School 17
我需要编写一个将BuildingNames组合在一起的查询,并显示一个PollNumbers列表,如下所示:
Run Code Online (Sandbox Code Playgroud)BuildingName PollNumbers ------------ ----------- Foo Centre 12, 13, 14 Bar Hall 15, 16 Baz School 17
我怎么能在T-SQL中做到这一点?我宁愿不为此写一个存储过程,因为它看起来有点矫枉过正,但我不是一个数据库人.看起来像SUM()或AVG()这样的聚合函数是我需要的,但我不知道T-SQL是否有一个.我正在使用SQL Server 2005.
t-sql sql-server group-by sql-server-2005 aggregate-functions
我在使用Pandas的groupby功能时遇到了麻烦.我已经阅读了文档,但是我无法弄清楚如何将聚合函数应用于多个列并为这些列提供自定义名称.
这非常接近,但返回的数据结构具有嵌套的列标题:
data.groupby("Country").agg(
{"column1": {"foo": sum()}, "column2": {"mean": np.mean, "std": np.std}})
Run Code Online (Sandbox Code Playgroud)
(即.我想取column2的mean和std,但将这些列作为"mean"和"std"返回)
我错过了什么?
好吧,我想我可能会忽略一些显而易见/简单的东西......但是我需要编写一个只返回同一列上符合多个条件的记录的查询...
我的表是一个非常简单的链接设置,用于向用户应用标志...
ID contactid flag flag_type
-----------------------------------
118 99 Volunteer 1
119 99 Uploaded 2
120 100 Via Import 3
121 100 Volunteer 1
122 100 Uploaded 2
Run Code Online (Sandbox Code Playgroud)
等......在这种情况下,您会看到联系人99和100都被标记为"志愿者"和"上传"......
我需要做的是返回那些只能匹配通过搜索表单输入的多个条件的contactid ... contactid必须匹配所有选择的标志...在我脑海中,SQL应该类似于:
SELECT contactid
WHERE flag = 'Volunteer'
AND flag = 'Uploaded'...
Run Code Online (Sandbox Code Playgroud)
但......没有回报......我在这里做错了什么?
我有一个包含多个列的数据框; 一些数字和一些字符.如何计算特定列的总和?我GOOGLE了这一点,我看到无数的功能(sum,cumsum,rowsum,rowSums,colSums,aggregate,apply),但我不能让这一切的感觉.
例如,假设我有一个people包含以下列的数据框
people <- read(
text =
"Name Height Weight
Mary 65 110
John 70 200
Jane 64 115",
header = TRUE
)
…
Run Code Online (Sandbox Code Playgroud)
我如何得到所有重量的总和?
有没有办法将聚合函数应用于数据帧的所有(或列表)列groupBy?换句话说,有没有办法避免为每一列执行此操作:
df.groupBy("col1")
.agg(sum("col2").alias("col2"), sum("col3").alias("col3"), ...)
Run Code Online (Sandbox Code Playgroud) 我试图理解没有聚合函数的GROUP BY (新的oracle dbms).
它是如何运作的?
这是我尝试过的.
我将运行我的SQL的EMP表.
SELECT ename , sal
FROM emp
GROUP BY ename , sal
Run Code Online (Sandbox Code Playgroud)

SELECT ename , sal
FROM emp
GROUP BY ename;
Run Code Online (Sandbox Code Playgroud)
结果
ORA-00979:不是GROUP BY表达式
00979. 00000 - "不是GROUP BY表达式"
*原因:
*操作:行
错误:397列:16
SELECT ename , sal
FROM emp
GROUP BY sal;
Run Code Online (Sandbox Code Playgroud)
结果
ORA-00979:不是GROUP BY表达式
00979. 00000 - "不是GROUP BY表达式"
*原因:
*操作:行错误:411列:8
SELECT empno , ename , sal
FROM emp
GROUP BY sal , ename;
Run Code Online (Sandbox Code Playgroud)
结果
ORA-00979:不是GROUP BY表达式
00979. 00000 - "不是GROUP BY表达式"
*原因: …
我想在SELECT子句中执行除法.当我连接一些表并使用聚合函数时,我经常使用null或零值作为分隔符.至于现在我只想出这种避免零和空值除法的方法.
(CASE(COALESCE(COUNT(column_name),1)) WHEN 0 THEN 1
ELSE (COALESCE(COUNT(column_name),1)) END)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来做到这一点?
我正在使用count并group by获得每天注册的订阅者数量:
SELECT created_at, COUNT(email)
FROM subscriptions
GROUP BY created at;
Run Code Online (Sandbox Code Playgroud)
结果:
created_at count
-----------------
04-04-2011 100
05-04-2011 50
06-04-2011 50
07-04-2011 300
Run Code Online (Sandbox Code Playgroud)
我想每天获得累计订阅者总数.我怎么得到这个?
created_at count
-----------------
04-04-2011 100
05-04-2011 150
06-04-2011 200
07-04-2011 500
Run Code Online (Sandbox Code Playgroud) sql ×6
group-by ×3
dataframe ×2
oracle ×2
postgresql ×2
sql-server ×2
apache-spark ×1
azure ×1
listagg ×1
mysql ×1
null ×1
pandas ×1
python ×1
r ×1
sum ×1
t-sql ×1
where-clause ×1