首页 新闻 会员 周边

MySql 求整点数据和,大神帮忙写一个呗。

0
[已解决问题] 解决于 2016-11-18 15:10
select t.seller_nick, 
case when (t.created > '2016-11-16 23:00:00' and t.created <= '2016-11-17 00:00:00.1') then sum(t.payment) else 0 end as '0',
case when (t.created > '2016-11-17 00:00:00' and t.created <= '2016-11-17 01:00:00.1') then sum(t.payment) else 0 end as '1'
from tcc_trades t where seller_nick ='佳能官方旗舰店';

表结构是这样的:

seller_nick  created  payment

 

我想求出佳能的24个整点payment,但是这样写求出来是0,请问怎么写才好呢?

MySql 数据库

Eysa的主页 Eysa | 初学一级 | 园豆:62
提问于:2016-11-17 18:18
< >
分享
最佳答案
0

select seller_nick, sum(payment) as total,dateformat(created,'%Y-%m-%d') as date

from tcc_trades

where ....

group by dateformat(created,'%Y-%m-%d'),seller_nick

奖励园豆:5
Daniel Cai | 专家六级 |园豆:10424 | 2016-11-18 10:45

FUNCTION tcctest.dateformat does not exist

Eysa | 园豆:62 (初学一级) | 2016-11-18 10:48

@Eysa: 

date_format

sorry,typo

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-18 10:51

@Daniel Cai: 

佳能官方旗舰店 2016-11-11 42730306.97
佳能官方旗舰店 2016-11-12 1071209.00
佳能官方旗舰店 2016-11-13 931529.00
佳能官方旗舰店 2016-11-14 1476883.59
佳能官方旗舰店 2016-11-15 1264942.00
佳能官方旗舰店 2016-11-16 863622.00
佳能官方旗舰店 2016-11-17 2187964.00

我要的是:

佳能官方旗舰店 2016-11-11 00:00:00
佳能官方旗舰店 2016-11-11 01:00:00
佳能官方旗舰店 2016-11-11 02:00:00

怎么改呢?

Eysa | 园豆:62 (初学一级) | 2016-11-18 10:54

@Eysa: 

date_format(created,'%Y-%m-%d %H')

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-18 10:55

@Daniel Cai: 

现在是这样:

佳能官方旗舰店 2016-11-17 00 2059.00
佳能官方旗舰店 2016-11-17 03 5854.00
佳能官方旗舰店 2016-11-17 04 3638.00
佳能官方旗舰店 2016-11-17 08 18766.00
佳能官方旗舰店 2016-11-17 09 13236.00
佳能官方旗舰店 2016-11-17 10 16847.00
佳能官方旗舰店 2016-11-17 11 23465.00
佳能官方旗舰店 2016-11-17 12 5913.00
佳能官方旗舰店 2016-11-17 13 40348.00
佳能官方旗舰店 2016-11-17 14 51081.00

差不多了,客户要求每天的整点数据从前一天的23点到今天的23点,就是:前一日23:00 -- 今日23:00

这样的话期待结果是:

佳能官方旗舰店 2016-11-16 00 2059.00
佳能官方旗舰店 2016-11-17 01 5854.00
佳能官方旗舰店 2016-11-17 02 3638.00
佳能官方旗舰店 2016-11-17 03 18766.00

Eysa | 园豆:62 (初学一级) | 2016-11-18 11:04

@Eysa: 你where条件加个时间过滤不就可以了么?

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-18 11:13

@Daniel Cai: good,thank you very much.

Eysa | 园豆:62 (初学一级) | 2016-11-18 11:14

select t.seller_nick, date_format(t.created,'%H') as time, sum(t.payment) as gmv
from v_shop s left join tcc_trades t
on s.shop_name = t.seller_nick
where s.SEL_ITEM_ID = 2
and t.created between '2016-11-17' and '2016-11-18'
and t.pay_time > '2010-01-01'
group by date_format(t.created,'%Y-%m-%d %H'), t.seller_nick

得出的结果是:

佳能官方旗舰店 00 2059.00
雅马哈旗舰店 00 2180.00
佳能官方旗舰店 03 5854.00
佳能官方旗舰店 04 3638.00
雅马哈旗舰店 07 50.00
佳能官方旗舰店 08 18766.00
佳能官方旗舰店 09 13236.00
佳能官方旗舰店 10 16847.00

如何转成下面这种格式呢,其实就是行转列:

shop_name   0   1   2    3

佳能官方旗舰店 2059.00      0      0                  5854.00

雅马哈旗舰店    2180.00      0      12544.12      0

 

Eysa | 园豆:62 (初学一级) | 2016-11-18 11:36

@Daniel Cai: 

 

select seller_nick, date_format(created,'%H') as date, sum(payment) as gmv
from tcc_trades
where seller_nick ='佳能官方旗舰店'
and created between '2016-11-17' and '2016-11-18'
and pay_time > '2016-01-01'
group by date_format(created,'%Y-%m-%d %H'),seller_nick

我去掉了left join

结果是这样的:

佳能官方旗舰店 00 2059.00
佳能官方旗舰店 03 5854.00
佳能官方旗舰店 04 3638.00
佳能官方旗舰店 08 18766.00
佳能官方旗舰店 09 13236.00
佳能官方旗舰店 10 16847.00
佳能官方旗舰店 11 23465.00
佳能官方旗舰店 12 5913.00
佳能官方旗舰店 13 40348.00
佳能官方旗舰店 14 51081.00
佳能官方旗舰店 15 171368.00

现在怎么行转列呢?形成一行数据。

Eysa | 园豆:62 (初学一级) | 2016-11-18 11:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册