2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的邏輯是您只想計(jì)算進(jìn)入的訪客,而不是離開(kāi)的訪客?,F(xiàn)在,如果你取diff(),那么進(jìn)來(lái)的就是正數(shù),離開(kāi)的就是負(fù)數(shù)。所以我們可以用 和 再次掩蓋負(fù)數(shù)0。
咱們?cè)囋嚢桑?/p>
dates = df.DATETIME.dt.normalize()
max_visitors = (df.groupby(dates)['CLIENTS'].diff() # find the difference
.fillna(df['CLIENTS']) # these are the first records in the day
.clip(0) # replace negatives with 0
.groupby(dates).sum() # sum by days
)
輸出:
DATETIME
2018-03-03 7.0
Name: CLIENTS, dtype: float64

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您的 MySql 版本是 8.0+,那么您可以使用LAG()窗口函數(shù)和聚合:
select
? sum(case when clients > prev then clients - prev end) total
from (
? select *, lag(clients, 1, 0) over (order by datetime) prev
? from tablename
? where date(datetime) = '2018-03-03'
) t
添加回答
舉報(bào)