如何对重复的行进行分组并计算它们?

Posted

技术标签:

【中文标题】如何对重复的行进行分组并计算它们?【英文标题】:How to group duplicated rows and count them? 【发布时间】:2019-02-17 19:38:11 【问题描述】:

我的桌子:

id | item_id
1  | 5
2  | 5
3  | 7
4  | 2

sql:

$countWeek = $conn->query("SELECT count(item_id) FROM `myTable` GROUP BY `item_id`")->fetchColumn();

如您所见,我有 2 个重复的行,item_id = 5 我想将这些重复的行分组并输出3 行计数,但是当我这样做时echo $countWeek 它输出1,为什么?

当我把上面的sql改成:

$countWeek = $conn->query("SELECT item_id FROM `myTable` GROUP BY `item_id`")->rowCount();

它返回正确的值,但我不想使用rowCount(),因为我只需要计算行数,而fetchColumn()count() 在速度方面要好得多。

【问题讨论】:

【参考方案1】:

你可以使用 couct(distinct item_id)

    SELECT count(distinct item_id) 
    FROM `myTable` 

【讨论】:

以上是关于如何对重复的行进行分组并计算它们?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据条件对sql中的行进行分组

SQL - 如何在单独的行计算之后对数据进行分组

C# 属性列表。需要根据2个条件对它们进行分组[重复]

对分组内的行进行排名(2 列)

根据 pandas 中的字典对数据帧的行进行分组并对相应的分子求和

计算记录并按小时对它们进行分组