Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 按日期从1个表组中的sql 2列中选择_Mysql_Sql_Select_Group By_Pivot - Fatal编程技术网

Mysql 按日期从1个表组中的sql 2列中选择

Mysql 按日期从1个表组中的sql 2列中选择,mysql,sql,select,group-by,pivot,Mysql,Sql,Select,Group By,Pivot,我对select语句使用1个表中的2个列并按日期对数据进行分组存在一些问题。 我拥有的数据如下所示: 我想要的结果是: 任何人都可以在这方面提供帮助?您可以执行条件聚合: select date_format(date, '%Y-%m-01') date_month, sum(`close` > `open`) uptime, sum(`close` < `open`) downtime, sum(`close` = `open`) equalt

我对select语句使用1个表中的2个列并按日期对数据进行分组存在一些问题。 我拥有的数据如下所示:

我想要的结果是:


任何人都可以在这方面提供帮助?

您可以执行条件聚合:

select 
    date_format(date, '%Y-%m-01') date_month,
    sum(`close` > `open`) uptime,
    sum(`close` < `open`) downtime,
    sum(`close` = `open`) equaltime
    stock_id
from mytable
group by date_month, stock_id
选择
日期格式(日期,%Y-%m-01')日期月份,
总和(`close`>`open`)正常运行时间,
总停机时间(`close`<`open`),
和(`close`=`open`)相等
股票代码
从mytable
按日期、月份、股票id分组

注意,我添加了一个额外的查询do count days,其中
close
等于
open

您可以执行条件聚合:

select 
    date_format(date, '%Y-%m-01') date_month,
    sum(`close` > `open`) uptime,
    sum(`close` < `open`) downtime,
    sum(`close` = `open`) equaltime
    stock_id
from mytable
group by date_month, stock_id
选择
日期格式(日期,%Y-%m-01')日期月份,
总和(`close`>`open`)正常运行时间,
总停机时间(`close`<`open`),
和(`close`=`open`)相等
股票代码
从mytable
按日期、月份、股票id分组
注意,我添加了一个额外的查询do count days,其中
close
等于
open

您可以使用
right()
从日期中提取所需月份

select
    right(date, 6) as month,
    sum(case when change > 0 then 1 else 0 end) as up_times,
    sum(case when change < 0 then 1 else 0 end) as down_times,
    stock_id
from yourTable
group by
    right(date, 6),
    stock_id
选择
右侧(日期,6)为月份,
求和(当更改>0时,则为1,否则为0结束)作为up_次,
总和(当变化小于0时,则为1,否则为0结束)作为下降时间,
股票代码
从你的桌子上
分组
对(日期,6),,
股票代码
您可以使用
right()
从日期中提取所需月份

select
    right(date, 6) as month,
    sum(case when change > 0 then 1 else 0 end) as up_times,
    sum(case when change < 0 then 1 else 0 end) as down_times,
    stock_id
from yourTable
group by
    right(date, 6),
    stock_id
选择
右侧(日期,6)为月份,
求和(当更改>0时,则为1,否则为0结束)作为up_次,
总和(当变化小于0时,则为1,否则为0结束)作为下降时间,
股票代码
从你的桌子上
分组
对(日期,6),,
股票代码

请用您正在使用的数据库标记您的问题:mysql、oracle、postgresql…?您能详细说明结果吗?请用您正在使用的数据库标记您的问题:mysql、oracle、postgresql…?您能详细说明结果吗?