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

Posted

技术标签:

【中文标题】如何只返回一列的计数结果?【英文标题】:How to return a count result of only one column? 【发布时间】:2020-05-11 13:26:39 【问题描述】:

我有一张这样的桌子:

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

例如: 如果我使用这个查询:

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”在表格中出现的频率。

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

【问题讨论】:

请记住,表是有名字的——并给了我们一个可以使用的名字。否则,人们必须在动态中发明名称,这可能会导致答案中有很多不同的名称(如果有多个答案),这使得比较答案变得困难。 @JonathanLeffler 你是对的。对此感到抱歉。我将在另一个问题中考虑这一点。 【参考方案1】:

我使用了您的部分数据,并将在表格中包含我所拥有的数据,但我相信这就是您想要的

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

这个例子很小,没有包含/考虑你可以放在表上以提高查询性能的索引。

【讨论】:

以上是关于如何只返回一列的计数结果?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CriteriaBuilder 的 JPA 计数(*)。如何使用 CriteriaBuilder 检索 count(*) 列

excel中如何计算一列数据的和

EXCEL 如何查询一个数据是不是在某一列中

Python-根据另一列的更改创建一个计数器列,然后再次启动计数器

使用同一表中另一列的数据计数更新一列? [关闭]

选择多个不同条件的计数,只计数不同,在一行中返回结果