【问题标题】:Mysql result manipulationMysql结果操作
【发布时间】:2017-01-07 22:34:08
【问题描述】:

我有一个大的 mysql 查询,它显示一列结果,如下所示。

现在我想计算 visit_type 中的每个实体。我该怎么做?

结果:

我不想要任何其他 sql 查询。我希望事情发生在我的主要查询中:

     SELECT DATE( `fc`.`date` ) AS Date,`f`.`name` AS facility_Name, count( * ),
    `fc`.`provider_id`, CONCAT( `u`.`fname`, ' ', `u`.`lname` ) AS 
    provider_name,
    GROUP_CONCAT((`oc`.`pc_catname`)) AS `visit_type` 
    FROM `form_encounter` AS fc 
    LEFT JOIN `facility` AS f ON ( `fc`.`facility_id` = `f`.`id` )
    LEFT JOIN `users` AS u ON ( `fc`.`provider_id` = `u`.`id` ) 
    LEFT JOIN `openemr_postcalendar_categories` AS oc ON ( `fc`.`pc_catid` = `oc`.`pc_catid` ) 
   WHERE DATE(`fc`.`date`) BETWEEN '2016-06-17' AND '2016-06-24' 
  GROUP BY `fc`.`facility_id`, DATE( `fc`.`date` ),provider_name 
  ORDER BY DATE( `fc`.`date` ) ASC

非常感谢任何帮助。

【问题讨论】:

  • @Jens:OP使用group_concat(),所以他没有这样存储
  • @juergend 我只是想问一下。那么发布的查询并不是产生结果的原因。
  • @TimBiegeleisen:我认为是。 OP 只输出了GROUP_CONCAT((oc.pc_catname)) AS visit_type 的一个相关列结果
  • 是的,我只显示了一列结果,因为我只想要修改

标签: mysql select group-by left-join group-concat


【解决方案1】:

您需要使用两个级别的聚合来执行此操作。像这样的:

SELECT Date, facility_Name, Provider_Id, Provider_Name,
       GROUP_CONCAT(pc_catname, '(', cnt, ')')
FROM (SELECT DATE(fc.`date`) AS Date, f.name AS facility_Name,

             fc.provider_id, CONCAT(u.fname, ' ', u.lname)  AS provider_name,
             pc_catname, COUNT(*) as cnt
      FROM form_encounter fc LEFT JOIN
           facility f
           ON fc.facility_id = f.id LEFT JOIN
           users u
           ON fc.provider_id = u.id LEFT JOIN
           openemr_postcalendar_categories oc
           ON fc.pc_catid = oc.pc_catid 
      WHERE DATE(fc.`date`) BETWEEN '2016-06-17' AND '2016-06-24' 
      GROUP BY fc.facility_id, DATE(fc.date), provider_name, pc_catname
     ) x
GROUP BY facility_id, date, provider_id, provider_name
ORDER BY DATE(fc.date) ASC;

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2021-12-28
    • 2013-06-10
    • 1970-01-01
    相关资源
    最近更新 更多