雄辩的方式,平均过滤2列

时间:2017-03-16 11:34:49

标签: php jquery mysql laravel eloquent

我有一个JobPosts表,我想选择平均工资大于给定值的所有记录。我可以通过使用原始查询来做到这一点,但我觉得我错过了一些东西。我的代码:

create proc dbo.MyProc( @SequenceNo int, @Timestamp datetime ) as
begin
  select * from MyTable where
        case when @SequenceNo is not null THEN SequenceNo > @SequenceNo
              ELSE Timestamp > @Timestamp
        end
end

我可以不使用原始查询或以其他更好的方式执行此操作吗?

4 个答案:

答案 0 :(得分:0)

试试这个:

$salary = 100000;
echo $query = JobPost::whereRaw($salary.' < (SELECT AVG(salary_min + salary_max ) FROM job_posts)')->get();

job_posts替换为您的表名

答案 1 :(得分:0)

不确定这项工作是否有一段时间没有触及Laravel,但是内存不足你应该能够做到这样的事情:

$salary = 100000;
$query = JobPost::selectRaw('((salary_min + salary_max) / 2) as average')->where('average', '>', $salary)->getQuery();

答案 2 :(得分:0)

简单的兄弟

试试

控制器代码

   $salary = 100000; $query = JobPost::all();
  return view('--your blade file name--', compact('query'))

并编写此代码的刀片文件。会得到$ avg“display:block”或“display:none”。然后将$ avg样式应用于jobpost。所以

如果“display:none”表示jobpost将隐藏其他“display:block”表示将显示jobpost

@foreach($query as $querys )
    <?php
        $value_salary_min  = $querys['salary_min'];
        $value_salary_max  = $querys['salary_max'];
        $avg               = ($value_salary_min + $value_salary_max )/2
        $avg               = $avg >= $salary? "display:block" : "display:none";
    ?>
@endforeach

答案 3 :(得分:0)

兄弟,我有另一个解决方案

在表格中为平均创建一个新列,当您插入数据时,平均薪水计算会将该值存储在平均列中。

现在很容易比较您的平均值并获得搜索结果。

喜欢

bool bIsConnected = axCZKEM1.Connect_Com(1235,201, 115200); 

if (bIsConnected == true)
{
   MessageBox.Show("Device Connected Successfully");
}
else
{
   MessageBox.Show("Device Not Connect");
}

Avg 您的新列名称和 $ salary 是您的变量

试试这个逻辑兄弟