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你说得对。对不起。我会在进一步的问题上考虑这个问题。