Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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,如何从同一列计算两个日期之间的百分比 我有一个最新的专栏。 例如: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'
在本例中,如何获取name
apple
的结果?您能在问题本身中添加此信息吗?我更新了我的答案,以您描述的方式使用了
名称
列。感谢您抽出时间!非常感谢
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';