我试图获取子实体中属性的平均值,同时还尝试仅包含一组选择的记录.
我的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项目并手动执行此操作,但我知道这会导致性能问题.我不确定这样做的最佳方法是什么.
谢谢你的帮助.
我正在尝试在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) 我正在使用Postgres 9.3.
我有两张桌子T1 和它们之间T2的n: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) 我正在使用最新的Realm(0.90.0)并且在一对多关系中有两个RealmObjects事件和游戏:
public class Event extends RealmObject
{
...
private RealmList<Game> games;
}
Run Code Online (Sandbox Code Playgroud)
我希望过滤事件的条件之一,游戏数量必须大于0.我不知道如何在我的查询中包含该过滤器.
谢谢!
我试图得到所有员工缺席和现在的总数,通过左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列中返回相同数量的记录.
我究竟做错了什么 ?
我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
我想编写Spark UDAF,其中列的类型可以是任何在其上定义了Scala Numeric的列.我已经搜查了互联网,但发现只有具体类型,如例子DoubleType,LongType.这不可能吗?但是如何将UDAF与其他数值一起使用呢?
scala aggregate-functions user-defined-functions apache-spark apache-spark-sql
我找到了一种将不同行中的字符串聚合到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之类的东西。
谢谢!
如果我的子查询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)
但是它们并没有区别。
例如,假设我有
SELECT sum(...) as total
Run Code Online (Sandbox Code Playgroud)
我能做点什么吗
WHERE total > 10
Run Code Online (Sandbox Code Playgroud)
当我尝试实际语法时,我得到一个错误
无效的列名称'total'
sql ×5
apache-spark ×2
postgresql ×2
sql-server ×2
android ×1
core-data ×1
count ×1
crosstab ×1
division ×1
group-by ×1
ios ×1
join ×1
left-join ×1
mysql ×1
realm ×1
scala ×1
select ×1
subquery ×1
sybase ×1
sybase-ase ×1
sybase-ase15 ×1