求一个 SQL

2018-10-19 16:43:14 +08:00
 mili8908
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


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

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

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

括号里面变长应该没问题
PulpFunction
2018-10-19 17:10:14 +08:00
没用过数据库纯属瞎哔哔路过
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
2018-10-19 17:10:49 +08:00
是变成'20181018' | ( 100,120 ) | 220
dovme
2018-10-19 17:11:17 +08:00
应该是可以的,你试一下
Leigg
2018-10-19 17:13:32 +08:00
要用到子查询,子查询的条数和要 count 的 name 的个数相关,所以你这个需求仍然需要多条 sql 完成。追求一个 sql 毫无意义。
PulpFunction
2018-10-19 17:16:48 +08:00
( 100,120 )换成 name+数据的字典格式

应该能行 数据也能提取出来
dovme
2018-10-19 17:18:16 +08:00
#8 补充格式好看了一些
mili8908
2018-10-19 17:21:28 +08:00
@dovme 厉害了
qinrui
2018-10-19 17:23:49 +08:00
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
2018-10-19 17:24:22 +08:00
@dovme 没必要搞子查询
dovme
2018-10-19 17:28:46 +08:00
@qinrui 额.好吧,其实意思是一样的,我也脑残了
likuku
2018-10-19 17:32:12 +08:00
db 只作它本职工作不好么?简单直接高效取出素材数据就好。

如何拼装输出,让 db 之上的应用层代码去作有何不可?
SbloodyS
2018-10-19 17:35:24 +08:00
lateral view explode 了解下
Lsj777
2018-10-19 17:44:30 +08:00
磊哥 加波好友撒

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499203

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX