V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
mccreefei
V2EX  ›  MySQL

Mysql 复杂查询 sql 求救!

  •  
  •   mccreefei · 2020-06-19 15:29:55 +08:00 · 1963 次点击
    这是一个创建于 1603 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有两个表,代理商表 agent_info(id{代理商 id}, type {1:一级代理 2: 二级代理}, parent_id {二级代理所属一级代理 id}), 用户表(id, agent_id{用户所属代理商 id}), 现在需要汇总每个一级代理商下的用户数,格式行差不多如下 agent_id(一级代理 id), second_agent_num(二级代理数), user_num(代理的用户数), second_agent_user_num(所有二级代理的用户数)。 请教这个需求的复杂 sql 怎么写?

    WhereverYouGo
        1
    WhereverYouGo  
       2020-06-19 15:52:08 +08:00
    看的难受,格式化一下?
    DelayNoMay
        2
    DelayNoMay  
       2020-06-19 15:57:50 +08:00
    取出来后,用 pandas 随便怎么搞都可以
    CRVV
        3
    CRVV  
       2020-06-19 16:01:24 +08:00
    这个拆开查就简单了,查一次所有一级代理下面有多少二级代理,再查一次一级代理下面有多少用户,再查一次一级代理下面的二级代理有多少用户,分三次查应该也没什么不好的。

    合到一起的话,在第三个查询里面用 count(distinct) 把前面两次查询的结果算出来应该就可以了。
    Vegetable
        4
    Vegetable  
       2020-06-19 16:06:08 +08:00
    你这个逻辑层次不适合写单条语句
    mccreefei
        5
    mccreefei  
    OP
       2020-06-19 16:10:18 +08:00
    @DelayNoMay #2
    @CRVV #3
    @Vegetable #4
    感谢回答,好像确实一条 sql 不太能搞定,需要通过程序处理
    cyrnicolase
        6
    cyrnicolase  
       2020-06-19 16:47:07 +08:00
    这个描述风格很恼火呀,看着难受!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4733 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.