Group by,带N1QL Couchbase的json中的数组
我有下面这样的JSONGroup by,带N1QL Couchbase的json中的数组,couchbase,n1ql,Couchbase,N1ql,我有下面这样的JSON "Company|1000":{ "_id": 1000, "_type": "Company", "transactions": [ { "amount": 96.9, "date": "2016-10-11T18:30:00.000Z", }, { "amount": 77.9, "date": "2016-9-01T18:30:00.000Z", } ], } 我希望按
"Company|1000":{
"_id": 1000,
"_type": "Company",
"transactions": [
{
"amount": 96.9,
"date": "2016-10-11T18:30:00.000Z",
},
{
"amount": 77.9,
"date": "2016-9-01T18:30:00.000Z",
}
],
}
我希望按月份和年份分组所有交易计数
我试图做下面的查询,但结果不同
select ARRAY DATE_PART_MILLIS(STR_TO_MILLIS(x.date),'month') FOR x IN
Company.transactions END m,
ARRAY DATE_PART_MILLIS(STR_TO_MILLIS(z.date),'year') FOR z IN
Company.transactions END y,
count(CASE WHEN array_count(b) > 0 THEN array_count(b) ELSE 0 END)
Deposits
from Inheritx Company
LET b = ARRAY TONUMBER(x.amount) FOR x in Company.transactions WHEN
x.type IN [0] END
where Company._type="Company"
GROUP BY ARRAY DATE_PART_MILLIS(STR_TO_MILLIS(x.date),'month') FOR x IN
Company.transactions END,
ARRAY DATE_PART_MILLIS(STR_TO_MILLIS(x.date),'year') FOR x IN
Company.transactions END
我要像这样出去
y m count
2016 9 2
2016 10 12
2016 8 52
我已完成以下查询
SELECT DATE_PART_MILLIS(STR_TO_MILLIS(newTransaction.date),'month') m,
DATE_PART_MILLIS(STR_TO_MILLIS(newTransaction.date),'year') y,
count(CASE WHEN newTransaction.transactionType IN [0] THEN 1 ELSE NULL END)
Deposits
FROM Inheritx Users
join Inheritx Company on keys('Company|'|| TOSTRING(Users.company))
UNNEST Company.transactions as newTransaction
WHERE Users._type='User' and DATE_PART_MILLIS(STR_TO_MILLIS(newTransaction.date),'year')=2016
group by DATE_PART_MILLIS(STR_TO_MILLIS(newTransaction.date),'month')
order by DATE_PART_MILLIS(STR_TO_MILLIS(newTransaction.date),'month')
您需要使用UNNEST和GROUP BY。请在此处发布您的解决方案作为答案,以便其他人可以找到它。你问了一个好问题@geraldss请帮助我你可以用DATE_PART_STR()代替DATE_PART_MILLIS(MILLIS_TO_STR())。