sql 分组后怎么把结果合并到一个类别下啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 分组后怎么把结果合并到一个类别下啊相关的知识,希望对你有一定的参考价值。
合并后
就是水果的显示到一个类别下
蔬菜的在一个类别下
--建表
Create Table T
(
商品 Varchar(10),
类别 Varchar(10),
数量 Int
)
--插入数据
Insert Into T Values('苹果','水果',10)
Insert Into T Values('葡萄','水果',20)
Insert Into T Values('西红柿','蔬菜',30)
--方法一,按商品类别分类求和,加with cube选项
Select ISNULL(商品,'分类-'+类别) As 商品,数量
From (
Select 商品,类别,SUM(数量) As 数量 From T
Group By 商品,类别
With Cube
) S
Where 类别 Is Not Null
--方法二,按商品和类别分别汇总后合拼在一起,然后排序
Select 商品,数量
From (
Select 商品,Max(类别)As 类别,SUM(数量) As 数量 From T
Group By 商品
Union All
Select '分类-'+类别,类别+'Z',SUM(数量) As 数量 From T
Group By 类别
) S
Order By 类别
--如果没有类别,需要先建一个对照表
--建表
Create Table M
(
商品 Varchar(10),
类别 Varchar(10)
)
Create Table N
(
商品 Varchar(10),
数量 Int
)
--插入数据
Insert Into M Values('苹果','水果')
Insert Into M Values('葡萄','水果')
Insert Into M Values('西红柿','蔬菜')
Insert Into N Values('苹果',10)
Insert Into N Values('葡萄',20)
Insert Into N Values('西红柿',30)
Insert Into N Values('苹果',15)
--查询
Select IsNull(商品,'分类-'+类别) As 商品,数量
From (
Select n.商品,类别,SUM(数量) As 数量 From n Left Join m
on m.商品=n.商品
Group By n.商品,类别
With Cube
) s
Where 类别 is not null 参考技术A 你的表结构是什么,发出来,才好写SQL
将 JSON 结果分组到类别中
【中文标题】将 JSON 结果分组到类别中【英文标题】:Grouping JSON results into categories 【发布时间】:2022-01-18 23:06:51 【问题描述】:我正在尝试从 JSON 结果集中对一些类似的数字进行分组。我需要将所有 [1, X] 分组到小型/大型组中,将 [0, X] 分组到小型/中型/大型组中。
我认为我需要对数据进行一些预处理并找到数据的平均值或钟形曲线?
$results = json_decode("data": [[0, 2960], [1, 768], [0, 592], [1, 384], [0, 592], [1, 400], [0, 208], [1, 384], [0, 208], [1, 384], [0, 320], [1, 1056], [0, 576], [1, 400], [0, 208], [1, 384], [0, 592], [1, 768], [0, 208], [1, 400], [0, 592], [1, 768], [0, 208], [1, 768], [0, 208], [1, 400], [0, 1360], [1, 384], [0, 208], [1, 400], [0, 192], [1, 784], [0, 208], [1, 384], [0, 592], [1, 768], [0, 224], [1, 768], [0, 208], [1, 768], [0, 592], [1, 384], [0, 208], [1, 768], [0, 224], [1, 368], [0, 1376], [1, 784], [0, 208], [1, 384], [0, 224], [1, 768], [0, 208], [1, 768], [0, 592], [1, 768], [0, 224], [1, 768], [0, 208], [1, 768], [0, 592], [1, 400], [0, 96], [1, 16], [0, 16], [1, 464], [0, 32], [1, 944], [0, 1968], [1, 0]]);
foreach($flashes as $values)
$flash_status = $values[0];
$length = $values[1];
// flashing
if($flash_status == 1)
if($length is short)
// do something
elseif($length is long)
// do something
else
// pausing
if($length is short)
// do something
elseif($length is medium)
// do something
elseif($length is long)
// do something
【问题讨论】:
你如何定义什么是短/中/长? 【参考方案1】:这就是最终为我工作的原因。对于 180 跳跃仍有硬编码检查,但它现在可以满足我的需要。
array_multisort($ordering, array_column($ordering, 0));
$flash_categories = array(
1 => array (
'short' => array('min'=> 0,'max'=> 0,),
'long' => array('min'=> 0,'max'=> 0,),
),
0 => array (
'short' => array('min'=> 0,'max'=> 0,),
'medium' => array('min'=> 0,'max'=> 0,),
'long' => array('min'=> 0,'max'=> 0,),
),
);
$previous_value = 0;
$previous_flash = 0;
$flash_heading_index = 0;
$flash_headings = array(
1 => array ('short','long'),
0 => array ('short','medium','long'),
);
foreach($ordering as $values)
$flash_status = $values[0];
$length = $values[1];
// skip errors
if($length < 100 || $length > 2000)
continue;
if($previous_flash != $flash_status)
$previous_flash = $flash_status;
$flash_heading_index = 0;
$previous_value = 0;
// check to see how much difference there is in time
if($length - $previous_value > 180 && $previous_value != 0)
$flash_heading_index++;
// cap off the heading index
if(!isset($flash_headings[$flash_status][$flash_heading_index]))
$flash_heading_index = sizeof($flash_headings[$flash_status])-1;
// set min and max threshold to values
if($flash_categories[$flash_status][$flash_headings[$flash_status][$flash_heading_index]]['min'] == 0)
$flash_categories[$flash_status][$flash_headings[$flash_status][$flash_heading_index]]['min'] = $length;
$flash_categories[$flash_status][$flash_headings[$flash_status][$flash_heading_index]]['max'] = $length;
else
$flash_categories[$flash_status][$flash_headings[$flash_status][$flash_heading_index]]['max'] = $length;
$previous_value = $length;
【讨论】:
以上是关于sql 分组后怎么把结果合并到一个类别下啊的主要内容,如果未能解决你的问题,请参考以下文章