我有一张有孩子记录的表,我想以逗号分隔的结果按月降序排列,但每个月中孩子的状况都有一个破缺的情况。如果状态为 0 ,则将其推入数组,但如果状态为 1 ,则不要将其推入并中断,也不要检查前几个月的记录。
表格
所需的输出:
我已经尝试过这种方法,这使我所有的时间都增加了。但我不知道如何在每个孩子的 status = 1 条件下打破它
SELECT name, ARRAY_AGG(month ORDER BY month DESC)
FROM children
GROUP BY name
答案 0 :(得分:2)
我认为这是
SELECT name, ARRAY_AGG(month ORDER BY month DESC)
FROM (SELECT c.*,
MAX(c.month) FILTER (c.status = 1) OVER (PARTITION BY c.name) as last_1_month
FROM children c
) c
WHERE month > last_1_month
GROUP BY name;
此逻辑仅获取status = 1
的最后一个月,然后选择以后的所有月。
如果月份实际上是连续的且没有间隔,则可以执行以下操作:
SELECT name,
ARRAY_AGG(month ORDER BY month DESC)[1:MAX(month) - MAX(month) FILTER (c.status = 1)]
FROM children c
GROUP BY name;
答案 1 :(得分:1)
我将使用不存在的条件来过滤掉您不想要的记录:
//Create a method which will parse json and return the result in String
//(I am assuming string as parse response for simplicity)
public Observable<String> parseJson(JsonObject jsonObject) {
return Observable
.create(
e -> {
//parse json code goes here.
// Once parsing done pass the details
e.onNext("Details from parsing json");
e.onComplete();
}
);
}