在SQL中计算SLA时出现的问题

时间:2018-10-03 17:39:47

标签: sql sql-server function

我正在使用下面的函数来计算2个输入时间戳之间的经过时间。仅应计算工作时间花费的时间。营业时间为周一至周六的上午8点至下午6点。

函数调用语法: 选择xxxxx('2018.09.28 19:02:28','2018-09-29 10:40:35')函数给出的输出为98分钟,正确的答案为160分钟。


功能结构为:

import numpy as np
import pandas as pd


train_data = pd.read_csv('labeledTrainData.tsv',sep='\t')
print(train_data)
print(train_data.iloc[1].review)

test_data = pd.read_csv('testData.tsv',sep = '\t')
print(test_data)

import matplotlib.pyplot as plt
import seaborn as sns

train_data['review_len'] = train_data.review.apply(len)
len_pl = plt.hist(train_data.review_len.values)
plt.show(len_pl)

#describe negative reviews
print(train_data[train_data.sentiment==0].describe())
print(train_data[train_data.sentiment==1].describe())

#inspecting outliers
print(train_data[train_data.review_len==52].review.all())
print(train_data[train_data.review_len==13708].review.all())

#word exrtaction

from sklearn.feature_extraction.text import CountVectorizer

vocab = ['awesome', 'terrible']
simple_vectorizer = countVectorizer(vocabulary=vocab)
bow = simple_vectorizer.fit_transform(train_data.review).todense()
print(bow)

1 个答案:

答案 0 :(得分:0)

您要遍历两次循环,但是在第一次迭代中,您将进入第二个IF块,并将@temp设置为-62

在第二个迭代中,您进入第三个IF块,并为@WorkStart和@FinishTime之间的差计算160,但随后将其添加到@Temp中已有的值。 160-62 = 98。

在执行该逻辑之前,您需要第二个IF块来检查“开始时间”是否在“工作完成”之前。

(@CurrentDate=@LeadAssignDay) AND (@CurrentDate!=@LeadContactDay)

需要成为

(@CurrentDate=@LeadAssignDay) AND (@CurrentDate!=@LeadContactDay) AND ( @StartTime < @WorkFinish)

除了一个用例之外,我还没有进行任何审核。确保进行一些彻底的测试。