求一个 SQL - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mili8908
V2EX    Python

求一个 SQL

  •  
  •   mili8908 2018-10-19 16:43:14 +08:00 3050 次点击
    这是一个创建于 2636 天前的主题,其中的信息可能已经有所发展或是发生改变。
    table 如下 表名就叫 x_table 吧

    date | name | count
    '20181018' | laowang | 100
    '20181018' | laoli | 120
    '20181016' | laoli | 1440
    '20181016' | laowang | 108

    期望查询到的结果是这样的
    date | count1(laowang 的) | count2(laoli 的) | count1+count2
    '20181018' | 100 | 120 | 220


    写的有点简陋
    20 条回复    2018-10-19 17:44:30 +08:00
    dovme
        1
    dovme  
       2018-10-19 16:50:33 +08:00
    行转列?
    reus
        2
    reus  
       2018-10-19 16:52:40 +08:00
    再来一个 laosun 呢?如果 name 有 1 万种呢?
    你这样的做法,就是挖坑害人。
    hualongbei
        3
    hualongbei  
       2018-10-19 16:57:06 +08:00
    记得之前学的时候弄过这种绕了半天 工作了发现完全用不到...
    PulpFunction
        4
    PulpFunction  
       2018-10-19 16:58:52 +08:00
    @reus 意思应该是同一天的相同姓名,求和
    PulpFunction
        5
    PulpFunction  
       2018-10-19 17:07:49 +08:00
    一点一点来比较简单
    先插日期到表。
    选名字日期,对应的求和(应该好查),也放到表。

    噢噢噢噢 表变长了啊。。。
    name 数会一直增长吗。。就是挖坑啊

    哈哈 @reus 我搞错了
    PulpFunction
        6
    PulpFunction  
       2018-10-19 17:09:38 +08:00
    考虑变成'20181018' | ( 100,200 ) | 220

    括号里面变长应该没问题
    PulpFunction
        7
    PulpFunction  
       2018-10-19 17:10:14 +08:00
    没用过数据库纯属瞎哔哔路过
    dovme
        8
    dovme  
       2018-10-19 17:10:16 +08:00
    ```
    SELECT
    s.date ,
    sum(s.zhangsan) ,
    sum(s.lisi) ,
    sum(s.zhangsan) + sum(s.lisi) 'count1+count2'
    FROM
    (
    SELECT
    date ,
    CASE
    WHEN NAME = 'zhangsan' THEN
    count
    ELSE
    0
    END 'zhangsan' ,
    CASE
    WHEN NAME = 'lisi' THEN
    count
    ELSE
    0
    END 'lisi'
    FROM
    x_table
    ) s
    GROUP BY
    s.date;


    ```

    ![]( )
    PulpFunction
        9
    PulpFunction  
       2018-10-19 17:10:49 +08:00
    是变成'20181018' | ( 100,120 ) | 220
    dovme
        10
    dovme  
       2018-10-19 17:11:17 +08:00
    应该是可以的,你试一下
    Leigg
        11
    Leigg  
       2018-10-19 17:13:32 +08:00 via iPhone
    要用到子查询,子查询的条数和要 count 的 name 的个数相关,所以你这个需求仍然需要多条 sql 完成。追求一个 sql 毫无意义。
    PulpFunction
        12
    PulpFunction  
       2018-10-19 17:16:48 +08:00
    ( 100,120 )换成 name+数据的字典格式

    应该能行 数据也能提取出来
    dovme
        13
    dovme  
       2018-10-19 17:18:16 +08:00   1
    #8 补充格式好看了一些
    mili8908
        14
    mili8908  
    OP
       2018-10-19 17:21:28 +08:00
    @dovme 厉害了
    qinrui
        15
    qinrui  
       2018-10-19 17:23:49 +08:00 via iPhone
    Select
    Date date,
    Sum(case when name=‘ laowang ’ then count else 0 end) count1,
    Sum(...) count2,
    Sum(...)+Sum(...) count1and2
    From
    X_table
    Group by
    Date
    qinrui
        16
    qinrui  
       2018-10-19 17:24:22 +08:00 via iPhone
    @dovme 没必要搞子查询
    dovme
        17
    dovme  
       2018-10-19 17:28:46 +08:00
    @qinrui 额.好吧,其实意思是一样的,我也脑残了
    likuku
        18
    likuku  
       2018-10-19 17:32:12 +08:00
    db 只作它本职工作不好么?简单直接高效取出素材数据就好。

    如何拼装输出,让 db 之上的应用层代码去作有何不可?
    SbloodyS
        19
    SbloodyS  
       2018-10-19 17:35:24 +08:00
    lateral view explode 了解下
    Lsj777
        20
    Lsj777  
       2018-10-19 17:44:30 +08:00
    磊哥 加波好友撒
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5588 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 01:40 PVG 09:40 LAX 17:40 JFK 20:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86