Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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中添加公式_Mysql - Fatal编程技术网

在mysql中添加公式

在mysql中添加公式,mysql,Mysql,我想从现有表创建一个新表 这是现有的表 A B C title view_count date aaa 24 5/18/13 bbb 10 5/18/13 ccc 10 5/18/13 aaa 10 5/19/13 aaa 20 5/20/13 bbb 10 5/20/13

我想从现有表创建一个新表

这是现有的表

A       B               C     
title   view_count  date   

aaa      24      5/18/13    
bbb      10      5/18/13    
ccc      10      5/18/13    
aaa      10      5/19/13    
aaa      20      5/20/13    
bbb      10      5/20/13    
ccc      20      5/20/13    
ccc      20      5/21/13    
aaa       5      5/22/13    
bbb       3      5/22/13    
ccc       1      5/22/13    
我尝试按如下方式制作新表:

title  date1(5/18/13)    date2(5/19/13)    date3(5/20/13)

aaa      24 (view_count)      10                20
我如何在MySQL中实现这一点

======================= 我补充我的问题。我尝试了这些你帮助的查询,然后我得到了我想要的结果。 我能把它们做成新桌子吗? 我想根据这些结果制作一个新表

编辑…OP在我回答时改变了他的问题,
SUMIFS()
可以帮助您

我整天都在查找和返回数据时经常使用它。它允许您从某个范围返回一个值,其中某个范围中的一个或多个特定条件为真。适用于像您这样的结构化数据

如果第1行中的标题如第2行中的数据所示,并且您的<代码>今天日期为F1,则您可以在第D2列中键入并向下拖动的公式为

=(SUMIFS(B:B,A:A,A2,C:C,$F$1-1)-SUMIFS(B:B,A:A,A2,C:C,$F$1-2))/(SUMIFS(B:B,A:A,A2,C:C,$F$1-1))
您可以使用excel函数
Today()
更改单元格F1的值,也可以将Today放入公式中

我希望这有帮助

-舍比尔斯


您可以这样做:

select title,
       sum(case `date` when '2013/05/18' then view_count else 0 end) `date1(5/18/13)`,
       sum(case `date` when '2013/05/19' then view_count else 0 end) `date2(5/19/13)`,
       sum(case `date` when '2013/05/20' then view_count else 0 end) `date3(5/20/13)`
from myTable
group by title

-返回所有标题的值;如果您只想查看标题aaa的结果,请用
where title='aaa'
替换
group by title

尝试此
查询

select 
    distinct
    t.title,
    t1.view_count as `date1(5/18/13)`,
    t2.view_count as `date2(5/19/13)`,
    t3.view_count as `date2(5/20/13)`
from table_name t
left join table_name t1 on t.title=t1.title and t1.date='2013/5/18'
left join table_name t2 on t.title=t2.title and t2.date='2013/5/19'
left join table_name t3 on t.title=t3.title and t3.date='2013/5/20'
where t.title='aaa'

在这种情况下Excel和mysql有什么关系?为什么要这样做?您所描述的“新表”设计糟糕,比原始表更难使用。您最好只对原始表使用查询,以获取所需的任何信息。mysql不支持这些。你最好只获取一个普通的标题/日期/计数多行结果,并在客户端应用程序中进行列化。Op需要在
mysql
中进行列化,而不是在Excel中。他在我回答时编辑了Op。也许应该删除我的答案?非常感谢。事实上,我想得到这个答案。但是我没能理解,所以我改变了我的问题。这很有帮助。谢谢
select 
    distinct
    t.title,
    t1.view_count as `date1(5/18/13)`,
    t2.view_count as `date2(5/19/13)`,
    t3.view_count as `date2(5/20/13)`
from table_name t
left join table_name t1 on t.title=t1.title and t1.date='2013/5/18'
left join table_name t2 on t.title=t2.title and t2.date='2013/5/19'
left join table_name t3 on t.title=t3.title and t3.date='2013/5/20'
where t.title='aaa'