Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLITE查询以获得所需的结果_Sqlite - Fatal编程技术网

SQLITE查询以获得所需的结果

SQLITE查询以获得所需的结果,sqlite,Sqlite,表的格式如图1.1所示 M_CODE H_CODE END_TIME_OF_SERVICE ADULT ADULT_F TKLK LONE 09:19:16 1 2 TKLK LONE 09:22:11 4 6 TKLK LONE 09:32:46 2 7 TKLK LONE 09:32:46 4 9 TKLK LONE

表的格式如图1.1所示

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
如果我运行SELECT strftime'%H:%M',end,'-9分钟'| |'-'| | strftime'%H:%M',end AS time_slot FROM end_times,它会给出正确的输出,如图-1.2所示

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
09:19 - 09:28
09:29 - 09:38
09:39 - 09:48
09:49 - 09:58
09:59 - 10:08
10:09 - 10:18 
您能指导如何映射这两个表吗?假设CUSTOMER表中的记录应该用图1.2到图1.1汇总成人和成人的f列

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
   ADULT    ADULT_F    TIME_SLOT
      5        8      09:19 - 09:28
      6       16      09:29 - 09:38
      0        0      09:39 - 09:48
      0        0      09:49 - 09:58
      0        0      09:59 - 10:08
      1        3      10:09 - 10:18 

请给我一个解决方案,谢谢您的时间。

首先,我们必须以便于比较的格式获取开始/结束时间,稍后我们可以将其合并:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
SELECT strftime('%H:%M', end, '-9 minutes') AS slot_start,
       strftime('%H:%M', end              ) AS slot_end
FROM end_times
然后我们可以将其连接到CUSTOMER表,同时忽略秒数:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
SELECT ADULT,
       ADULT_F,
       slot_start,
       slot_end
FROM (SELECT strftime('%H:%M', end, '-9 minutes') AS slot_start,
             strftime('%H:%M', end              ) AS slot_end
      FROM end_times)
     LEFT JOIN CUSTOMER
     ON substr(END_TIME_OF_SERVICE, 1, 5) BETWEEN slot_start AND slot_end
最后,我们按插槽分组以获得每个插槽的总和。我使用的不是求和,而是零表示空值:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3

首先,我们必须以便于比较的格式获得开始/结束时间,我们可以在以后将其合并:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
SELECT strftime('%H:%M', end, '-9 minutes') AS slot_start,
       strftime('%H:%M', end              ) AS slot_end
FROM end_times
然后我们可以将其连接到CUSTOMER表,同时忽略秒数:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3
SELECT ADULT,
       ADULT_F,
       slot_start,
       slot_end
FROM (SELECT strftime('%H:%M', end, '-9 minutes') AS slot_start,
             strftime('%H:%M', end              ) AS slot_end
      FROM end_times)
     LEFT JOIN CUSTOMER
     ON substr(END_TIME_OF_SERVICE, 1, 5) BETWEEN slot_start AND slot_end
最后,我们按插槽分组以获得每个插槽的总和。我使用的不是求和,而是零表示空值:

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3

非常好的CL,再次非常感谢您。我希望我没有打扰您。我尽了最大努力在30分钟的间隔内解决了同样的问题,但没有达到预期的效果。您能否提供帮助,以30分钟为间隔生成查询。请更改结束时间和strftime偏移量。如果您有问题,请以问题的形式提问。嗨,CL,谢谢您的时间,并将新创建的问题以提问的形式提问。请尽全力生成30分钟出色的CL,再次非常感谢您,希望我没有打扰您,我尽了最大努力以30分钟的间隔找出相同的问题,但未能获得预期的结果。您能否提供帮助,以30分钟为间隔生成查询。请更改结束时间和strftime偏移量。如果您有问题,请以问题的形式提问。嗨,CL,谢谢您的时间,并将新创建的问题以提问的形式提问。请在30分钟内完成生成所需的全部操作