Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Select 如何只返回一列的计数结果?_Select_Frequency_Informix - Fatal编程技术网

Select 如何只返回一列的计数结果?

Select 如何只返回一列的计数结果?,select,frequency,informix,Select,Frequency,Informix,我有一张这样的桌子: 我想按时段(日期字段)进行选择,在这里我可以返回寄存器,并且一列中的寄存器总数只与一列匹配 例如: 如果我使用此查询: SELECT date, product_type, operation, unit FROM table WHERE date BETWEEN '2019-08-26 00:00:00' AND '2019-08-26 23:59:59'; 它必须返回: 但我希望我能再返回一列,其中包含的操作总数与以下时间段无关: 在这种情况下,6是表中出现“a

我有一张这样的桌子:

我想按时段(日期字段)进行选择,在这里我可以返回寄存器,并且一列中的寄存器总数只与一列匹配

例如: 如果我使用此查询:

SELECT date, product_type, operation, unit
FROM table
WHERE date BETWEEN '2019-08-26 00:00:00' AND '2019-08-26 23:59:59';
它必须返回:

但我希望我能再返回一列,其中包含的操作总数与以下时间段无关:

在这种情况下,6是表中出现“ajoy”的频率


重要!如果我选择返回两个或多个操作的时间段,那么查询必须能够返回它们的频率。

我使用了您的部分数据,并将在表中包含我对数据的内容,但我相信这是您想要的

create table mytab (job int, operations char(8), prod char(8),  
ts_date datetime year to minute, unit int) lock mode row;

insert into mytab values(22, "ajoy","arrow","2020-05-11 08:51", 20);
insert into mytab values(22, "ajoy","arrow","2020-05-11 08:51", 20);
insert into mytab values(22, "ajoy","arrow","2020-05-11 08:51", 20);

insert into mytab values(22, "ajoy","arrow","2020-04-11 14:15", 20);
insert into mytab values(22, "ajoy","arrow","2020-04-11 14:15", 20);
insert into mytab values(22, "ajoy","arrow","2020-04-11 14:15", 20);

insert into mytab values(23, "dinn","curve","2020-05-11 08:51",1);
insert into mytab values(23, "dinn","point","2020-05-11 08:51",1);
insert into mytab values(23, "dinn","arrow","2020-04-11 08:51",1);
查询:

select job, operations, prod, ts_date, unit, (select count(*) from mytab b 
where b.operations = a.operations) total_operation  from mytab a where 
a.ts_date between "2020-05-11 08:50" and "2020-05-11 08:59"
上面的查询给了我以下结果,我想这是你想要的:

    job operations prod     ts_date                 unit  total_operation

     22 ajoy       arrow    2020-05-11 08:51          20                6
     22 ajoy       arrow    2020-05-11 08:51          20                6
     22 ajoy       arrow    2020-05-11 08:51          20                6
     23 dinn       curve    2020-05-11 08:51           1                3
     23 dinn       point    2020-05-11 08:51           1                3

这个示例很小,没有包含/说明您可能需要在表上放置哪些索引来加快查询性能。

请记住,表有名称,并为我们提供了一个名称。否则,人们必须在飞行中发明名称,这可能导致答案中出现许多不同的名称(如果有多个答案),这使得比较答案变得很困难。@JonathanLeffler你说得对。对不起。我会在进一步的问题上考虑这个问题。