SQL查询是否可以返回一些普通列和一些聚合列?
喜欢 :
Col_A | Col_B | SUM
------+-------+------
5 | 6 | 7
Run Code Online (Sandbox Code Playgroud) 我有一个名为表votes的列id,image_id,user_id和time.
如果特定user_id是每个选票之一,我如何在结果中添加一个bool image_id?
SELECT image_id,
count(image_id) as vote_count
FROM votes
GROUP BY image_id
ORDER BY vote_count DESC
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,if(user_id = 18, 1, 0) as have_voted但它并不适合每个人image_id.
由于所有实体都标记了谁创建/修改了记录,我们是否可以将Person实体视为所有实体的聚合根?
也就是说,引用Person的所有实体都将成为Person的集合,例如
public class Person
{
public virtual int PersonId { get; set; }
public virtual string Lastname { get; set; }
public virtual IList<OrderHeader> CreatedOrders { get; set; }
public virtual IList<OrderHeader> ModifiedOrders { get; set; }
// Other entities that have a reference on Person will be mapped as a collection under
// the Person entity
}
public class OrderHeader
{
public virtual int OrderId { get; set; }
public virtual DateTime OrderDate { get; set; }
public …Run Code Online (Sandbox Code Playgroud) 我需要"名"类:mycat是一个text可能的值列'0'来'4'.
SELECT CASE mycat
WHEN '0' THEN 'ZERO'
WHEN '1' THEN 'ONE'
WHEN '2' THEN 'TWO'
WHEN '3' THEN 'THREE'
WHEN '4' THEN 'OTHER'
END AS my_category,
COALESCE(SUM(col1), 0),
COALESCE(SUM(col2), 0),
COALESCE(SUM(col3), 0)
FROM mytable
GROUP BY mycat
ORDER BY mycat;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我的程序中有一些错误很少写null(或者''我在pgAdmin中可以看到).在这种情况下,我不得不把那个''一样'0'.但我不能那样做!
我试着这样:
SELECT CASE COALESCE(mycat, '0')
Run Code Online (Sandbox Code Playgroud)
但这根本无法解决.
如何得到''它将与'0'类别相加并组合在一起?
PostgreSQL 9.3,Windows.
我在填充"Main"集合时遇到了问题,分组工作得很好,但我真的不知道如何填充,甚至在聚合后找到.find.我相信我在这里做模特铸造:
Main.aggregate([
{$match : query},
{
$group:{
_id: queryGroupBy,
activated: {$sum: '$activated'},
componentTitle: {$first:'$componentTitle'},
titlePrefix: {$first:'$titlePrefix'},
operator_name: {$first:'$operator_name'}
}
},
{
$project:{
_id: '$_id',
summation: '$activated',
componentTitle: '$componentTitle',
titlePrefix: '$titlePrefix',
operator_name: '$operator_name'
}
}],
function(err,results) {
if (err) throw err;
result = results.map(function(doc) {
doc._id = doc._id,
doc.activated = doc.activated,
doc.componentTitle = doc.componentTitle,
doc.titlePrefix = doc.titlePrefix,
doc.operator_name = doc.operator_name,
doc.fssStatusFDD = "",
doc.dateUpdated = "",
delete doc._id;
delete doc.summation;
var _main = new Main();
_main = doc;
console.log('test3');
return _main …Run Code Online (Sandbox Code Playgroud) 我正在尝试aggregate数据集,但我还想保留观察数量.所以我所拥有的与此类似:
aggregate(iris$Sepal.Length, by=list(iris$Species), FUN=mean)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个像这样的对象:
Group.1 x
1 setosa 5.006
2 versicolor 5.936
3 virginica 6.588
Run Code Online (Sandbox Code Playgroud)
当我想要的是那个和每个组中的观察(行)数量(在一个单独的列中)
我想在此数据框中应用聚合函数:
A <- data.frame(c(1:2,1:2,2),c("a","c","b","c","d"))
colnames(A) <- c("ola","hi")
A
> A
ola hi
1 1 a
2 2 c
3 1 b
4 2 c
5 2 d
Run Code Online (Sandbox Code Playgroud)
获得A的有序值A $ ola和相应的A $ hi唯一值,如下所示:
A <- data.frame(c(1:2),c("a,b","c,d"))
colnames(A) <- c("ola","hi")
> A
ola hi
1 1 a,b
2 2 c,d
Run Code Online (Sandbox Code Playgroud)
我试过这段代码:
aggregate(A, by=list(A$ola), FUN=unique)
Run Code Online (Sandbox Code Playgroud)
但它给出了这样的结果:
Group.1 ola hi.1 hi.2
1 1 1 a b
2 2 2 c d
Run Code Online (Sandbox Code Playgroud)
可以请有人解释我,我做错了什么?
我目前正在学习Slick。我试图将此查询从SQL转换为Scala:
SELECT name FROM Passenger
WHERE ID_psg in
(SELECT ID_psg FROM Pass_in_trip
GROUP BY place, ID_psg
HAVING count(*)>1)
Run Code Online (Sandbox Code Playgroud)
但是我只设法写了这样的东西,它给出了编译错误:
PassengerTable.table.filter(_.idPsg in (PassInTripTable.table.map(_.idPsgFk)))
.filter(PassengerTable.table.count(_.name) > 1)
.map(_.name)
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何在Slick中应用计数和查询。因此,我非常感谢您的帮助。
我有如下数据.它是从2015年1月1日〜2015年12月31日.数据按季度计算.但我想添加,例如,像0:00,0:15,0:30,0:45一样来制作小时数据.如何将其转换为每小时数据?
先感谢您.
Date Hour Day-ahead Total Load Forecast [MW] - Germany (DE)
01.01.2015 0:00 42955
01.01.2015 0:15 42412
01.01.2015 0:30 41901
01.01.2015 0:45 41355
01.01.2015 1:00 40710
01.01.2015 1:15 40204
01.01.2015 1:30 39640
01.01.2015 1:45 39324
01.01.2015 2:00 39002
01.01.2015 2:15 38869
01.01.2015 2:30 38783
01.01.2015 2:45 38598
01.01.2015 3:00 38626
01.01.2015 3:15 38459
01.01.2015 3:30 38414
...
> dput(head(new3))
structure(list(Date = structure(c(16436, 16436, 16436, 16436,
16436, 16436), class = "Date"), Hour = c("0:00", "0:15", "0:30",
"0:45", "1:00", "1:15"), Dayahead …Run Code Online (Sandbox Code Playgroud) 我正在处理一个大型数据集(大约40列),我需要按月汇总不同列的值,并对当月内的值求平均值。数据集看起来像这样。
dd <-
mo yr Na NH4 NO2
1 2009 0.4 N/A N/A
1 2009 0.2 0.1 N/A
2 2009 0.5 0.6 0.4
2 2009 0.7 0.2 0.1
Run Code Online (Sandbox Code Playgroud)
我用过
dd.agg=aggregate(.~mo+yr, dd, FUN=mean)
Run Code Online (Sandbox Code Playgroud)
来创建一个新的数据集,但是由于我在NO2列中有一些N / A数据(并且由于采样过程中的某些问题,所以我无法将其删除或将其更改为0),所以整个一月已从dd.agg数据集中删除。我尝试添加na.rm = TRUE,但似乎无济于事。
从本质上讲,我需要R忽略N / A数据的存在。不要将它们视为0(这会影响平均值),而是要从该数据集中获取如下内容
dd.agg <-
mo yr Na NH4 NO2
1 2009 0.3 0.1 N/A
2 2009 0.6 0.4 0.25
Run Code Online (Sandbox Code Playgroud)
如果整个月由N / A组成,那么平均值就是N / A值(或一个空单元格,对我来说并不重要,因为我在图中不需要它们),以及当一个月有只需几个N / As,即可得出非N / As值的平均值。我可以逐行执行相同的聚合过程,然后将所有内容手动放入新的数据集中,但是对于40列来说有点痛苦...有什么想法吗?
aggregate ×10
r ×4
sql ×4
c# ×1
case ×1
converter ×1
group-by ×1
linq ×1
mean-stack ×1
mongoose ×1
mysql ×1
nhibernate ×1
postgresql ×1
scala ×1
slick ×1