编辑以澄清我的问题
数据库:Presto,我使用我公司的工具进行查询,但是它基本上类似于MySQL或其他东西。
目的是:我有训练班,我想通过比较训练日前后的一些指标(例如W + 1,W + 2等与训练前)来对它们进行评估。经过几个子查询后,我可以使用以下值实现表(每个类都有其自己的度量标准,并且是唯一的)。
类|指标| shopid |培训前| w + 1 | w + 2 | w + 3
A | ……增加1122 | x | x1 | x2 | x3
B |减少…… 3322 | y | y1 | y2 | y3等
所以现在我想将W + 1,W + 2的值与预训练进行比较以得出结论,例如:如果x1> x->好,如果x2 所以我写了一个CASE WHEN语句 要应用到w + 1,w + 2等列上,以获得所需的结果,但是由于我必须为4列编写CASE语句,所以这将非常冗长,效率低下且重复,因此我考虑到LOOP,因此我只需要编写一次CASE语句,它就可以不重复地应用于所有4列。 我本可以提取数据并在Python中执行此操作,但我想学习如何在SQL中执行此操作,这样在完成查询后不必做额外的工作。 对不起,我对SQL还是很陌生(仅两个月左右,仍在努力工作,以丰富我的知识) 希望您能提供帮助。非常感谢您的帮助。 CASE metric = 'increase sth'
WHEN x1 > x THEN 'good'
WHEN x1 < x THEN 'bad'
CASE metric = 'decrease sth'
....
答案 0 :(得分:0)
您的问题很模糊,但是您可以使用class SomeController {
private $client;
public function __construct(YourHttpClient $client) {
$this->client = $client;
}
}
将行分开并只进行一次计算。这倾向于将值放在单独的行中:
lateral join
您还可以将这些值放回一行。
也就是说,您在使用关系数据库方面似乎没有良好的基础。问题始于您的初始结构,即您将值跨列存储,而不是将存储在单独的行中。
SQL没有“循环”,因为它是基于集合的。而且它是基于集合的,因此优化程序可以找出运行查询的最佳方法。