从同一列计算mysql中的百分比
如何从同一列计算两个日期之间的百分比 我有一个最新的从同一列计算mysql中的百分比,mysql,Mysql,如何从同一列计算两个日期之间的百分比 我有一个最新的专栏。 例如:2015-11-16该值为159,4,而今天的值为160,1 在这些日期之间还有其他价值观,我现在不感兴趣。如何计算特定日期与“今天”日期的百分比差异 编辑 SELECT curr.latest * 100 / NULLIF(prev.latest, 0) as percentage FROM myTable AS curr, myTable AS prev WHERE date(prev.timestamp) = '2015-
专栏。
例如:2015-11-16该值为159,4,而今天的值为160,1
在这些日期之间还有其他价值观,我现在不感兴趣。如何计算特定日期与“今天”日期的百分比差异
编辑
SELECT curr.latest * 100 / NULLIF(prev.latest, 0) as percentage
FROM myTable AS curr, myTable AS prev
WHERE date(prev.timestamp) = '2015-11-16'
AND date(curr.timestamp) = CURDATE()
AND curr.the_row_namn = 'apple'
特定日期(如2015-11-16)的最新
列的百分比,以及表myTable
中苹果的行
2015年11月16日<代码>当天<代码>苹果<代码>的<代码>最新<代码>栏与今天<代码>栏的百分比差异是多少
预期输出:(四舍五入)百分比:02864
或更好(如果可能)2,8%
希望这能澄清问题。这是此类查询的一般形式:
SELECT a.value / b.value AS abPerc
FROM the_table AS a
INNER JOIN the_table AS b ON [pairing criteria]
;
您可以使用以下SELECT
语句执行此操作:
SELECT curr.name,
curr.value * 100 / NULLIF(prev.value, 0) as percentage
FROM myTable AS curr
INNER JOIN myTable AS prev
ON curr.name = prev.name
WHERE prev.latest = '2015-10-26'
AND curr.latest = CURDATE()
AND curr.name = 'apple';
如果省略最后一个条件,则将根据name
的每个可能值得到一个结果
此查询的要点是使用表两次,一次选择当前记录,一次检索较早的记录。您只需在where
子句的第一行中指定您选择的日期即可
一旦有了这两条记录,就可以直接从这两条记录的值
列中计算百分比
NULLIF
用于防止被零除
错误。相反,您将得到一个NULL
结果。如果您可以提供表名和值列名,这将非常有用。我们目前只有一列(latest
)的名称。这似乎是一个不错的方法,谢谢!但是,我有一个问题……)我想我的问题遗漏了一些重要的信息。我也在尝试获取特定的行,但运气不好<代码>选择curr.latest*100/NULLIF(prev.latest,0)作为myTable中的百分比作为curr,myTable作为prev,其中日期(prev.timestamp)='2015-11-16'和日期(curr.timestamp)=CURDATE()和curr.the_name_column='apple'
在本例中,如何获取nameapple
的结果?您能在问题本身中添加此信息吗?我更新了我的答案,以您描述的方式使用了名称
列。感谢您抽出时间!非常感谢
SELECT curr.name,
curr.value * 100 / NULLIF(prev.value, 0) as percentage
FROM myTable AS curr
INNER JOIN myTable AS prev
ON curr.name = prev.name
WHERE prev.latest = '2015-10-26'
AND curr.latest = CURDATE()
AND curr.name = 'apple';