【问题标题】:get distinct user rows from table while counting a different row从表中获取不同的用户行,同时计算不同的行
【发布时间】:2021-03-21 18:19:15
【问题描述】:

我正在尝试从名为“reports”的 SQL 表中计算行数,按“working”排序为 0 / 1 / 2。

目前我有这个 SQL 查询,它可以给我三行,每行都有一个计数器,有多少“工作”为 0 / 1 / 2。

SELECT `working`, COUNT(`working`) AS `total` FROM `reports` 
WHERE `appid` = 379720 
GROUP BY `working` 
ORDER BY `report_id` DESC LIMIT 30

所以它目前(正确地按照 SQL)给了我类似的东西:

Working Total
0 12
1 34
2 18

想要做的是,每个用户只计算 一个行,我无法完全理解。我不能在“author_id”字段上使用不同的选择,因为它最终被包含在内,我不能按它分组,因为我需要按工作 int 分组。

明确一点:我希望显示相同的结果,但每行中每个唯一的“author_id”只计算一个。

任何指针?

【问题讨论】:

  • 请以表格文本的形式提供样本数据、当前和期望的结果。
  • 如何为 MySQL 之类的东西提供示例数据?将结果添加为表格。
  • 您可以以create tableinserts 语句或表格文本的形式共享您的数据。更重要的是,请向我们展示您想要的结果(作为表格文本)。您只显示了当前结果。
  • author_id 来自哪里?你想要的结果是什么样的?为什么每个用户计算一行然后谈论 author_id ?问题很乱,添加示例数据并期望输出作为问题的文本将有助于澄清。
  • ORDER BY report_id 一定会导致错误,因为输出列表中没有这样的列。如果report_id 是表的一列并且没有错误消息,则(1)ONLY_FULL_GROUP_BY 被禁用(2)这种排序没有意义,它接近ORDER BY RAND()

标签: mysql sql count distinct where-clause


【解决方案1】:

似乎想要count(distinct)

SELECT `working`, COUNT(DISTINCT author_id) AS `total` 
FROM `reports` 
WHERE `appid` = 379720 
GROUP BY `working` 
ORDER BY `report_id` DESC 

【讨论】:

  • 啊,是的,愚蠢的我就是这样,因为我已经按照与小组的工作进行了排序。呵呵。
  • 虽然,这似乎只计算每个分组的不同 author_id 而不是整体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多