Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

RayC's avatar
Level 10

Help converting MySQL query to laravel query

Hello,

I am stuck and cannot figure out how to convert this query into a laravel query. Maybe I'm overthinking it or just having a blank moment.

Here's the query:

SELECT salesperson_id,
       SUM(CASE WHEN salesperson_two_id IS NULL THEN 1 ELSE 0.5 END) totalDeals
FROM (
  SELECT salesperson_id, salesperson_two_id, sold_date FROM sold_logs
  UNION ALL
  SELECT salesperson_two_id, salesperson_id, sold_date FROM sold_logs WHERE salesperson_two_id IS NOT NULL
) t
WHERE MONTH(sold_date) = 7 AND YEAR(sold_date) = 2022
GROUP BY salesperson_id
ORDER BY totalDeals DESC;

Here's my attempt:

DB::table('sold_logs')
  			->select('salesperson_two_id')
            ->selectRaw("SUM(CASE WHEN salesperson_two_id IS NULL THEN 1 ELSE 0.5 END) totalDeals")
  			->select('salesperson_id, salesperson_two_id, sold_date')
            ->unionAll()
            ->select('salesperson_two_id, salesperson_id, sold_date')
            ->whereNotNull('salesperson_two_id')
  			->groupBy('salesperson_two_id')
            ->get();

Which obviously does not work.

DB table structure:

| id | salesperson_id | salesperson_two_id | sold_date
| --- | --- | ------- | ------
| 1   | 5   | null    | 2022-07-02
| 2   | 3   | 5       | 2022-07-18
| 3   | 4   | null    | 2022-07-16
| 4   | 5   | 3       | 2022-07-12
| 5   | 3   | 5       | 2022-07-17
| 6   | 5   | null    | 2022-07-18

Desired output, which it provides when I run it straight in MySQL:

| salesperson_id | totalDeals |
| --- | ---
| 5   | 3.5 
| 3   | 1.5 
| 4   | 1   

Any help would be greatly appareciated.

0 likes
3 replies
RayC's avatar
Level 10

@jlrdw Thank for the reply. For now I'm using just the raw query. Will refactor it sometime later.

Please or to participate in this conversation.