从另一个表中选择每个组的最高值和关联的行,按最高值排序

时间:2019-12-10 17:45:07

标签: mysql sql join inner-join

我正在尝试从两个表中获取这些值,并加入成员ID。在带有积分值的表中,每个成员的每笔销售都有总计行。我需要与成员表中其行相关联的成员积分,按值降序排序。这是我当前的查询,除非成员具有两个相同的条目,否则它将返回唯一值。


id <- c("a", "a", "a", "b", "b", "b")
content <- c("A", "B", "A", "B", "C", "B")
testdf <- data.frame(id, content, stringsAsFactors=FALSE)

library(runner)
library(dplyr)
testdf %>%
  group_by(id) %>%
  mutate(
    result = runner(x = content, 
                    f = function(x) paste(x, collapse = " "),
                    type = "character")) # specify output type - by default numeric

1 个答案:

答案 0 :(得分:1)

简单的JOINGROUP BY可能会满足您的要求:

SELECT 
    m.id,
    m.fname,
    m.lname,
    COALESCE(MAX(s.points_total), 0) AS points_total 
FROM member_member AS m
LEFT JOIN sale_sale AS s
    ON m.id = s.member_id
    AND s.site_id = 1
WHERE m.fname != "Sales"
GROUP BY m.id
ORDER BY points_total DESC;

编辑:将LEFT JOIN设为COALESCE(points_total, 0),以允许没有销售总额的成员显示在结果中。如果您不希望这样做,可以将LEFT JOIN更改为INNER JOIN并取消使用COALESCE函数。