mysql group by 最小值_使用MySQL中的GROUP BY从结果中获得最小值

我有表它存储层次数据在MySQL这个表存储稳定的关系,但如果每个用户少于1000购买删除和用户用户较低级别替换这是我的代码并正常工作, GROUP BY 它包含所有后代的祖先与比较然后 COUNT(*) AS level 计算每个用户的级别 . 这个我有SQL代码来压缩数据根据每个用户的最低购买量

+-------------+---------------+-------------+

| ancestor_id | descendant_id | path_length |

+-------------+---------------+-------------+

| 1 | 1 | 0 |

| 1 | 2 | 1 |

| 1 | 3 | 1 |

| 1 | 4 | 2 |

| 1 | 5 | 3 |

| 1 | 6 | 4 |

| 2 | 2 | 0 |

| 2 | 4 | 1 |

| 2 | 5 | 2 |

| 2 | 6 | 3 |

| 3 | 3 | 0 |

| 4 | 4 | 0 |

| 4 | 5 | 1 |

| 4 | 6 | 2 |

| 5 | 5 | 0 |

| 5 | 6 | 1 |

| 6 | 6 | 0 |

+-------------+---------------+-------------+

这是桌上买

+--------+--------+

| userid | amount |

+--------+--------+

| 2 | 2000 |

| 4 | 6000 |

| 6 | 7000 |

| 1 | 7000 |

SQL代码

SELECT a.*

FROM

( SELECT userid

FROM webineh_user_buys

GROUP BY userid

HAVING SUM(amount) >= 1000

) AS buys_d

JOIN

webineh_prefix_nodes_paths AS a

ON a.descendant_id = buys_d.userid

JOIN

(

SELECT userid

FROM webineh_user_buys

GROUP BY userid

HAVING SUM(amount) >= 1000

) AS buys_a on (a.ancestor_id = buys_a.userid )

JOIN

( SELECT descendant_id

, MAX(path_length) path_length

FROM webineh_prefix_nodes_paths

where a.ancestor_id = ancestor_id

GROUP

BY descendant_id

) b

ON b.descendant_id = a.descendant_id

AND b.path_length = a.path_length

GROUP BY a.descendant_id, a.ancestor_id

我需要获取max path_length,其中ancestor_id至少有1000个购买但是在子查询中的位置有错误a.ancestor_id = ancestor_id错误代码

1054 - 'where子句'中的未知列'a.ancestor_id'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值