【问题标题】:Need help with sql query, grouping and union/join?在 sql 查询、分组和联合/加入方面需要帮助?
【发布时间】:2011-07-06 04:05:46
【问题描述】:

我有一个 3 列的 mysql 表:

  • id [int]
  • 名称 [varchar]
  • 时间 [时间戳CURRENT_TIMESTAMP]
  • 标志 [布尔]

我正在使用这样的查询来按天对结果进行分组:

SELECT COUNT(DISTINCT name), DATE(time) as day FROM `table` GROUP BY day

这很好用,但我真正想在同一个查询中得到COUNT(DISTINCT name) WHERE FLAG = 0COUNT(DISTINCT name) WHERE FLAG = 1 并按天对它们进行分组。

我该怎么做?

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    然后您必须先在标志上应用分组,然后在当天应用分组

    SELECT COUNT(DISTINCT name), DATE(time) as day FROM `table` GROUP BY flag,day
    

    【讨论】:

    • 我想您还想选择标志字段,以便查看哪些计数属于该字段。
    【解决方案2】:

    您的问题不是很清楚,但我认为这可能会有所帮助.. SELECT COUNT(DISTINCT name), DATE(time) as day FROM table GROUP BY day HAVING FLAG=0 and FLAG=1

    或者您可以根据需要操作此查询进行分组..

    【讨论】:

      【解决方案3】:

      我想知道您是要使用存储过程还是仅使用选择查询来创建结果?

      "date" 
      "count number of flag = 1" 
      "count number of flag =0"
      

      你可以

      1. 创建 2 个模板表并将查询“flag = 1”和查询“flag = 0”的结果插入其中
      2. 在“日期”加入 2 个模板表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多