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 数据库
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
FUNCTION tcctest.dateformat does not exist
@Eysa:
date_format
sorry,typo
@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:
date_format(created,'%Y-%m-%d %H')
@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: 你where条件加个时间过滤不就可以了么?
@Daniel Cai: good,thank you very much.
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
@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
现在怎么行转列呢?形成一行数据。