Tag: 聚合函数

Postgres窗口function和组例外

我试图把一个查询,将检索一个用户的统计数据(利润/损失)作为累积的结果,在一段时间。 以下是我到目前为止的查询: SELECT p.name, e.date, sum(sp.payout) OVER (ORDER BY e.date) – sum(s.buyin) OVER (ORDER BY e.date) AS "Profit/Loss" FROM result r JOIN game g ON r.game_id = g.game_id JOIN event e ON g.event_id = e.event_id JOIN structure s ON g.structure_id = s.structure_id JOIN structure_payout sp ON g.structure_id = sp.structure_id AND r.position = sp.position JOIN player […]

select数据到Postgres数组

我有以下数据: name id url John 1 someurl.com Matt 2 cool.com Sam 3 stackoverflow.com 我怎样才能在Postgres中编写一个SQL语句来select这个数据到一个multidimensional array中,例如: {{John, 1, someurl.com}, {Matt, 2, cool.com}, {Sam, 3, stackoverflow.com}} 我以前在Postgres中已经看到过这种数组用法,但是不知道如何从表中select数据到这种数组格式。 假设这里所有的列都是texttypes的。

如何在集合函数的MySQL查询中获取分组logging的第一个和最后一个logging?

我正在尝试获取“分组”logging的第一个和最后一个logging。 更确切地说,我正在做这样的查询 SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date) 但我想得到这个小组的第一个和最后一个logging。 这可以通过做大量的请求,但我有一个相当大的表。 有没有(如果可能,处理时间很less)的方式来做到这一点与MySQL?

是否有MySQL 5.6的ANY_VALUEfunction?

目前我在开发中使用mysql 5.7,在生产中使用5.6。 每次我在开发中运行一个组的查询,我得到一些错误,如“错误代码:1055。SELECT列表的expression式#1不在GROUP BY” 这是查询。 SELECT c.id, c.name, i.* FROM countries c, images i WHERE i.country_id = c.id GROUP BY c.id; Fixed for 5.7; SELECT c.id, c.name, ANY_VALUE(i.url) url, ANY_VALUE(i.lat) lat, ANY_VALUE(i.lng) lng FROM countries c, images i WHERE i.country_id = c.id GROUP BY c.id; 为了解决这个问题,我使用了5.7 ANY_VALUE的mysql函数,但是主要的问题是它在MySQL 5.6中不可用 所以,如果我修复开发的SQL语句,我会得到一个错误的生产。 你知道在MySQL 5.6中的ANY_VALUE函数的任何解决scheme或polifill?

GROUP BY + CASE语句

我有一个工作查询是按硬件模型和结果分组数据,但问题是有很多“结果” 。 我试图减less到“如果结果= 0,然后保持为0,否则将其设置为1” 。 这一般工作,但我最终有: day | name | type | case | count ————+—————-+——+——+——- 2013-11-06 | modelA | 1 | 0 | 972 2013-11-06 | modelA | 1 | 1 | 42 2013-11-06 | modelA | 1 | 1 | 2 2013-11-06 | modelA | 1 | 1 | 11 2013-11-06 | modelB […]

在oracle中使用LISTAGG来返回不同的值

我正在尝试使用Oracle中的LISTAGG函数。 我想只获得该列的不同值。 有没有一种方法可以在不创build函数或过程的情况下获得唯一的值? col1 col2 Created_by 1 2史密斯 1 2约翰 1 3 Ajay 1 4 Ram 1 5杰克 我需要selectcol1和col2的LISTAGG (不考虑第3列)。 当我这样做,我得到这样的结果LISTAGG : [2,2,3,4,5] 我需要在这里删除重复的“2” 我只需要col1与col1不同的值。

SPARK SQLreplace为mysql GROUP_CONCAT聚合函数

我有一个两个stringtypes的列表(用户名,朋友),并为每个用户名,我想收集一行中的所有朋友,连接为string('username1','friends1,friends2,friends3')。 我知道MySql是通过GROUP_CONCAT做到的,有没有办法用SPARK SQL来做到这一点? 谢谢

SQL查询以获得聚合结果在逗号分隔符以及逐列在SQL Server中

我需要在表上写一个SQL查询,以便结果将有分组的列与逗号分隔符的聚合列。 我的表格将采用以下格式 |““““`|““““| | ID | Value | |_________|________| | 1 | a | |_________|________| | 1 | b | |_________|________| | 2 | c | |_________|________| 预期结果应采用以下格式 |““““`|““““| | ID | Value | |_________|________| | 1 | a,b | |_________|________| | 2 | c | |_________|________|

连接/聚合string的最佳方式

我正在find一种方法来将不同行中的string聚合成一行。 我正在寻找在许多不同的地方这样做,所以有一个function,以促进这将是很好的。 我已经尝试了使用COALESCE和FOR XML解决scheme,但是他们并没有为我裁剪。 string聚合会做这样的事情: id | Name Result: id | Names — – —- — – —– 1 | Matt 1 | Matt, Rocks 1 | Rocks 2 | Stylus 2 | Stylus 我已经看了CLR定义的聚合函数来代替COALESCE和FOR XML ,但显然SQL Azure 不支持CLR定义的东西,这对我来说是一个痛苦,因为我知道能够使用它会解决很多问题给我。 是否有任何可能的解决方法,或类似的最佳方法(可能不如CLR最佳,但嘿,我会拿我能得到的),我可以用来聚合我的东西?

我怎样才能简化这个游戏统计查询?

这个代码按预期工作,但我很长,令人毛骨悚然。 select p.name, p.played, w.won, l.lost from (select users.name, count(games.name) as played from users inner join games on games.player_1_id = users.id where games.winner_id > 0 group by users.name union select users.name, count(games.name) as played from users inner join games on games.player_2_id = users.id where games.winner_id > 0 group by users.name) as p inner join (select […]