在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'