标签: aggregate-functions

最有效的方法是获得平均值,同时过滤掉一些对象

我试图获取子实体中属性的平均值,同时还尝试仅包含一组选择的记录.

我的Core Data模型中有两个实体:Invoice和InvoiceDetail.

Invoice:<br>
  invoiceNum - attribute<br>
  invoiceDate - attribute<br>
  invoiceDetails - one-to-many relationship to InvoiceDetail

InvoiceDetail:<br>
  itemAmount - attribute<br>
  itemType - attribute<br>
  invoice - one-to-one relationship to Invoice<br>
Run Code Online (Sandbox Code Playgroud)

如果我想获得整个发票的itemAmount的平均值,我会使用以下(invoice是NSManagedObject):

float avgAmount = [[invoice valueForKeyPath:@"invoiceDetails.@avg.itemAmount"] floatValue];
Run Code Online (Sandbox Code Playgroud)

但是,我只想获取itemType = 1的对象的平均值.我可以遍历invoiceDetail项目并手动执行此操作,但我知道这会导致性能问题.我不确定这样做的最佳方法是什么.

谢谢你的帮助.

core-data aggregate-functions ios

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

SQL中的聚合函数划分不符合预期

我正在尝试在SQL Server 2008 R2中做一些交叉表.那部分没关系,但是,如果我试图获得每个单元格的百分比,我就会遇到问题.

这是一个蒸馏用例:一项调查,人们给出他们喜欢的颜色和他们喜欢的水果.我想知道有多少像给定的水果和给定的颜色:

with survey as (
    select 'banana' fav_fruit, 'yellow' fav_color
     union select 'banana', 'red'
     union select 'apple', 'yellow'
     union select 'grape', 'red'
     union select 'apple', 'blue'
     union select 'orange', 'purple'
     union select 'pomegranate', 'green'
)
select
    s.fav_color, 
    sum(case 
          when s.fav_fruit = 'banana' then 1
          else 0
        end) as banana, 
    sum(case 
           when s.fav_fruit = 'banana' then 1
           else 0
         end) / sum(1)   -- why does division always yield 0? "+", "-", and "*" all behave as expected. …
Run Code Online (Sandbox Code Playgroud)

sql sql-server crosstab aggregate-functions division

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

左连接横向和数组聚合

我正在使用Postgres 9.3.

我有两张桌子T1 和它们之间T2n:m关系T1_T2_rel.现在我想创建一个视图,除了T1的列之外,还提供了一个列,对于T1中的每个记录,该列包含一个数组,其中包含T2的所有相关记录的主键ID.如果T2中没有相关条目,则该列的相应字段应包含空值.

我的架构的抽象版本如下所示:

CREATE TABLE T1 ( t1_id serial primary key, t1_data int );

CREATE TABLE T2 ( t2_id serial primary key );

CREATE TABLE T1_T2_rel (
  t1_id int references T1( t1_id )
, t2_id int references T2( t2_id )
);
Run Code Online (Sandbox Code Playgroud)

相应的样本数据可以生成如下:

INSERT INTO T1 (t1_data)
SELECT cast(random()*100 as int) FROM generate_series(0,9) c(i);

INSERT INTO T2 (t2_id) SELECT nextval('T2_t2_id_seq') FROM generate_series(0,99);

INSERT INTO T1_T2_rel
SELECT cast(random()*10 as int) % 10 + …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate-functions postgresql-9.3

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

使用Java中的count()过滤领域

我正在使用最新的Realm(0.90.0)并且在一对多关系中有两个RealmObjects事件和游戏:

public class Event extends RealmObject
{
    ...
    private RealmList<Game> games;
}
Run Code Online (Sandbox Code Playgroud)

我希望过滤事件的条件之一,游戏数量必须大于0.我不知道如何在我的查询中包含该过滤器.

谢谢!

android count aggregate-functions realm

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

LEFT JOIN与表一起两次以获得单独的记录

我试图得到所有员工缺席和现在的总数,通过左employees表加入表格,attendance_chart其中包含attendance_status列中存在的记录

SELECT
    e.id AS employee_id,
    COUNT(present_days_chart.id) as present_days_count,
    COUNT(absent_days_chart.id) as absent_days_count

FROM
    employees e
    LEFT JOIN attendance_chart present_days_chart ON e.id = present_days_chart.attendance_for_employee_id AND present_days_chart.attendance_status = 'present'
    LEFT JOIN attendance_chart absent_days_chart ON e.id = absent_days_chart.attendance_for_employee_id AND absent_days_chart.attendance_status = 'absent'

WHERE
    e.id IN (106,138)

GROUP BY
    e.id
Run Code Online (Sandbox Code Playgroud)

但是,查询会在每行的present_days_count和absent_days_count列中返回相同数量的记录.

我究竟做错了什么 ?

mysql join group-by aggregate-functions left-join

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

在多个列上应用自定义Spark Aggregator(Spark 2.0)

Aggregator[]为Strings 创建了一个自定义.

我想将它应用于DataFrame所有列都是字符串的所有列,但列号是任意的.

我坚持写正确的表达方式.我想写这样的东西:

df.agg( df.columns.map( c => myagg(df(c)) ) : _*) 
Run Code Online (Sandbox Code Playgroud)

鉴于各种接口,这显然是错误的.

我看了一下RelationalGroupedDataset.agg(expr: Column, exprs: Column*)代码,但我不熟悉表达式操作.

任何的想法 ?

aggregate-functions user-defined-functions apache-spark apache-spark-sql

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

Spark UDAF - 使用泛型作为输入类型?

我想编写Spark UDAF,其中列的类型可以是任何在其上定义了Scala Numeric的列.我已经搜查了互联网,但发现只有具体类型,如例子DoubleType,LongType.这不可能吗?但是如何将UDAF与其他数值一起使用呢?

scala aggregate-functions user-defined-functions apache-spark apache-spark-sql

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

字符串的Sybase ASE 15聚合函数

我找到了一种将不同行中的字符串聚合到sybase ASE 15中的单行中的方法。像这样:

id | Name                    Result: id | Names
-- - ----                            -- - -----
1  | Matt                            1  | Matt, Rocks
1  | Rocks                           2  | Stylus
2  | Stylus
Run Code Online (Sandbox Code Playgroud)

T-SQL中的FOR XML PATH之类的东西。

谢谢!

sql sybase aggregate-functions sybase-ase sybase-ase15

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

Postgres:计算子查询中的唯一数组条目

如果我的子查询foo释放行:

ID, USERS 
1   {23129}
2   {23142}
3   {23300,23300}
4   {23129,23300}
Run Code Online (Sandbox Code Playgroud)

如何使用诸如以下的窗口函数来获得查询中的唯一身份用户数:

SELECT ... FROM ( <subquery> ) FOO
Run Code Online (Sandbox Code Playgroud)

我尝试了这个:

array_length(array_agg(array_length(array(SELECT Distinct unnest(users))),1)) over(), 1)
Run Code Online (Sandbox Code Playgroud)

但是会得到数组尺寸不相同的错误

注意:我无法更改子查询来解决此问题。

我可以按以下方式在数组中获取ID:-

string_to_array(string_agg(array_to_string(user_ids, ','), ',') over(),',')
Run Code Online (Sandbox Code Playgroud)

但是它们并没有区别。

sql postgresql select subquery aggregate-functions

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

我可以在MSSQL的WHERE子句中使用SUM函数的结果吗?

例如,假设我有

SELECT sum(...) as total
Run Code Online (Sandbox Code Playgroud)

我能做点什么吗

WHERE total > 10
Run Code Online (Sandbox Code Playgroud)

当我尝试实际语法时,我得到一个错误

无效的列名称'total'

sql sql-server aggregate-functions

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