【问题标题】:Group By Day and Section SQL按天和部分 SQL 分组
【发布时间】:2016-10-14 16:11:02
【问题描述】:

我想获取每天的销售统计数据并计算哪个部分的销售量。

我真的对“一切”感到困惑。

$em = $this->getEntityManager()->getConnection();

$stmt = $em->prepare("
        SELECT
            COUNT(o.id) AS `all`,
            (
              SELECT COUNT(id) FROM order_panoramic_orders WHERE DAY(created_at) = DAY(NOW()) AND status_id NOT IN (7,9)
            ) AS `day`
        FROM
          order_panoramic_orders as o
        WHERE
         status_id NOT IN (7,9)
        ");

我可以获得每日统计信息,但我不知道如何处理部分分离。

结果一定是这样的:

天:1 - 总计:10 - 第 1 节:3,第 2 节:5,第 3 节:2

有什么想法吗?

顺便说一句;

Section 和 user 表是分开的。

我想我必须加入这两个表。

第一个表:订单 第二张表:用户 第三张表:部分

【问题讨论】:

  • 您需要发布表架构和示例数据以获得帮助。
  • 期望的结果也会有很大帮助。

标签: mysql sql


【解决方案1】:

奇怪的查询。您的查询应该只是条件聚合。不需要子查询:

SELECT COUNT(*) AS `all`,
       SUM(DAY(created_at) = DAY(NOW())) as day
FROM order_panoramic_orders o
WHERE status_id NOT IN (7, 9);

然后,您可以使用相同的想法获得部分:

SELECT COUNT(*) AS `all`,
       SUM(DAY(created_at) = DAY(NOW())) as day,
       SUM(section = 1) as section1,
       SUM(section = 2) as section2,
       SUM(section = 3) as section3
FROM order_panoramic_orders o
WHERE status_id NOT IN (7, 9);

【讨论】:

  • 不错的答案。但我不知道部分的数量。它可以是 50 或 3。
  • 顺便说一句;我必须每天得到结果。 1到30~31。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多