Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL聚合组_Mysql_Sql_Grouping - Fatal编程技术网

Mysql SQL聚合组

Mysql SQL聚合组,mysql,sql,grouping,Mysql,Sql,Grouping,我觉得这是一个愚蠢的问题,但我一直无法通过搜索找到解决方案。我有一个包含销售数据的数据集,我想将一些ID组分组在一起,并显示销售总额。我不关心单个项目,我只想查看项目组及其销售总额 我现在所做的一个简化版本是: SELECT year, quarter, company, segment, sum(sales) AS total_sales FROM table WHERE segment = 001 OR segment = 015 AND producer LIKE '%ACME Inc.%

我觉得这是一个愚蠢的问题,但我一直无法通过搜索找到解决方案。我有一个包含销售数据的数据集,我想将一些ID组分组在一起,并显示销售总额。我不关心单个项目,我只想查看项目组及其销售总额

我现在所做的一个简化版本是:

SELECT year, quarter, company, segment, sum(sales) AS total_sales
FROM table
WHERE segment = 001 OR segment = 015
AND producer LIKE '%ACME Inc.%'
AND year = 2015 OR year = 2016
GROUP BY quarter, year, producer, segment
ORDER BY year, quarter, producer, segment ASC
;
我的主要问题是将段001和015放入同一个组,例如“Jelly”,以便输出显示

year|quarter|company|segment|total_sales

2015|1|ACME Inc.|Jelly|100
其中“果冻”包括001段和015段

我可以列出所有单独的项目,但不能将它们分组。我的问题是,在创建和列出细分市场的自定义组的同时,只能筛选我想要查看的公司和细分市场

谢谢你的帮助:)

编辑:这里是MCVE-


首先,我认为您需要修复
where
子句。以
0
开头的数字通常是字符串。另外,您应该在中使用
,并注意
/
逻辑:

SELECT year, quarter, company, segment, sum(sales) AS total_sales
FROM table
WHERE segment IN ('001', '015') AND
      producer LIKE '%ACME Inc.%' AND
      year IN (2015, 2016)
GROUP BY quarter, year, producer, segment
ORDER BY year, quarter, producer, segment ASC;
接下来,如果要组合段,请使用
case
。你似乎想要:

SELECT year, quarter, company, 'Jelly' as segement,
       SUM(sales) AS total_sales
FROM table
WHERE segment IN ('001', '015') AND
      producer LIKE '%ACME Inc.%' AND
      year IN (2015, 2016)
GROUP BY quarter, year, producer
ORDER BY year, quarter, producer ASC;

感谢您提供有关在中使用的说明。如果我将“果冻”设置为段,它将为所有段设置,但我需要能够区分多个段,不仅是果冻,还有其他段。谢谢,我在这里创建了一个MCVE::)我想要的是将两个100销售额组合到200,例如,ACME和jelly只有一行200 instad,两行各100。我明白了-MySQL只是混淆了段别名-谢谢,就是这样!有没有办法升级编辑?不过,我现在遇到了另一个问题。在我的查询中有很多数据是不需要的,但它仍然包含在其中:在第一行中,我得到了一个不需要的结果。在我看来,这很好。我的意思是-我宁愿不让第一行显示出来,因为它不是新闻节的一部分。
SELECT year, quarter, company, 'Jelly' as segement,
       SUM(sales) AS total_sales
FROM table
WHERE segment IN ('001', '015') AND
      producer LIKE '%ACME Inc.%' AND
      year IN (2015, 2016)
GROUP BY quarter, year, producer
ORDER BY year, quarter, producer ASC;
SELECT year, quarter, company,
CASE
  WHEN segment IN (001,015)
  THEN 'Jelly'
  WHEN segment IN (002,003)
  THEN 'Bread' ELSE segment END segment,
SUM(sales) AS total_sales
FROM Table1
WHERE company LIKE '%ACME%' OR company LIKE '%HAL%'
AND year IN (2015,2016)
GROUP 
   BY year
    , quarter
    , company
    , CASE WHEN segment IN (001,015) THEN 'Jelly'
           WHEN segment IN (002,003) THEN 'Bread' 
           ELSE segment
           END
 ORDER 
    BY year, quarter, company, segment ASC
;