我有一些特定数据集,涉及特定工作的SLA(服务水平协议),如下所示。 这里x表示没有小时数。 一旦任务在给定时间范围内完成,具体级别如下。
Level 1 --- > x>=500 Level 2 --- > 500> x >=400 Level 3 --- > 400> x >=300 Level 4 --- > 300> x >=200 Level 5 --- > 100 > x >=200
我需要达到特定任务的水平,例如: - 如果x为252,则该任务为4级。
我以下面的格式设计了表格,但是我不会给出获得任何x值的级别的能力。请建议我最好/准确的mysql表设计。
答案 0 :(得分:0)
您的表格设计隐含地假设订单。在关系数据库中,行没有顺序。没有。
因此,更好的设计是这些专栏:
serviceLevel
minimumHours
maximumHours
然后检索服务级别变得非常容易:
SELECT serviceLevel
FROM <table>
WHERE <hours> BETWEEN minimumHours AND maximumHours;
答案 1 :(得分:0)
您可以尝试为每个级别存储下限和上限,例如
Level | lower | upper
L1 | 500 | NULL
L2 | 400 | 500
L3 | 300 | 400
L4 | 200 | 300
L5 | 100 | 200
现在,如果您想运行建议的查询并搜索x = 252
,则可以执行以下操作:
SET @x=252;
SELECT *
FROM yourTable
WHERE
@x >= lower AND
(@x < upper OR upper IS NULL);