我被一个嵌套的数据库查询卡住了。我能得到一些帮助吗?
我的简单表如下所示:
餐桌:
+----+----------+-------------------------------+
| ID | NAME | nutrientName | NutrientAmount
+----+----------+---------------+---------------+
food1 calcium 200
food1 magnesium 300
food1 phosphorus 400
food2 calcium 220
food2 magnesium 320
food2 phosphorus 430
food3 calcium 230
.............
我用这个获得了前15个营养量:
select NAME from food_table
where nutrientName in ('calcium','magnesium')
group by NAME
order by sum(nutrient_amount) desc
limit 15;
目前,我只有名字。但是,我想以同样的顺序得到食物的全部营养。如果我再做一次选择,订单就会丢失。有没有办法得到同样顺序的食物记录?
编辑:我创建了一个小提琴:
https://www.db-fiddle.com/f/2hkvzpbtxkrnanpdjt35im/3
1条答案
按热度按时间dsekswqp1#
一种方法是使用窗口函数:
以上返回的营养素的最高数额为一个单一的营养素。如果两者都要,那么:
或者,如果您只是想要数量,那么条件聚合可能就是您想要的: