首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摘要查询返回重复值MySQL

摘要查询返回重复值MySQL
EN

Stack Overflow用户
提问于 2018-03-01 00:24:12
回答 2查看 63关注 0票数 1

我必须为我的系统上请求的门票做一份报告。

这些票据是从工作站调用的,并且该工作站与许多区域相关。

代码语言:javascript
复制
  SELECT
   DATE(q.created_at)   AS DATE,
   HOUR(q.created_at)   AS HOUR,
   ar.name              AS area,
   w.name               AS workstation,
   COUNT(DISTINCT q.id) AS count
  FROM qms_queue q
  JOIN qms_workstations w ON q.workstation_id = w.id
  JOIN qms_area_workstation aw ON aw.workstation_id = w.id
  JOIN qms_areas ar ON aw.area_id = ar.id
  WHERE q.created_at
      BETWEEN '2018-02-26 00:00:00'
      AND '2018-02-28 23:59:59'
      AND customer_id = 1
  GROUP BY DATE(q.created_at), w.id, HOUR(q.created_at)
  ORDER BY DATE(q.created_at), HOUR(q.created_at)

执行该查询后,我得到了票证的总计数。

代码语言:javascript
复制
  SELECT
   DATE(q.created_at)   AS DATE,
   HOUR(q.created_at)   AS HOUR,
   ar.name              AS area,
   w.name               AS workstation,
   COUNT(DISTINCT q.id) AS count
  FROM qms_queue q
  JOIN qms_workstations w ON q.workstation_id = w.id
  JOIN qms_area_workstation aw ON aw.workstation_id = w.id
  JOIN qms_areas ar ON aw.area_id = ar.id
  WHERE q.created_at
      BETWEEN '2018-02-26 00:00:00'
      AND '2018-02-28 23:59:59'
      AND customer_id = 1
  GROUP BY DATE(q.created_at), w.id, HOUR(q.created_at), ar.id
  ORDER BY DATE(q.created_at), HOUR(q.created_at)

但是,执行该查询将获得每个区域的绝对总数。

我想不出一个方法来计算每个区域的部分计数。

有人能帮我一下吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-01 04:38:13

在看不到实际数据的情况下,考虑简单地运行不同的聚合,一个在区域级别,另一个在工作站级别,而不是两者都运行。如果需要,按日期和小时将两者作为派生表子查询进行连接

区域级

代码语言:javascript
复制
SELECT
    DATE(q.created_at)   AS `DATE`,
    HOUR(q.created_at)   AS `HOUR`,
    ar.name              AS `area`,
    COUNT(DISTINCT q.id) AS `area_count`
...
GROUP BY DATE(q.created_at), HOUR(q.created_at), ar.name
ORDER BY DATE(q.created_at), HOUR(q.created_at)

工作站级

代码语言:javascript
复制
SELECT
   DATE(q.created_at)   AS `DATE`,
   HOUR(q.created_at)   AS `HOUR`,
   w.name               AS `workstation`,
   COUNT(DISTINCT q.id) AS `ws_count`
...
GROUP BY DATE(q.created_at), HOUR(q.created_at), w.name
ORDER BY DATE(q.created_at), HOUR(q.created_at)
票数 0
EN

Stack Overflow用户

发布于 2018-03-01 03:44:15

您好,我没有您的数据设置,但尝试分析函数为此

代码语言:javascript
复制
COUNT(q.id) OVER (PARTITION BY  ar.name)

如果它正在为每个区域提供计数,请选中此选项。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49034161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档