0

クライアントの名前、連絡先番号、電子メール アドレス、および合計 (合計) が 500 ドル以上の無給の仕事をしているクライアントの総無給の仕事の費用を表示するクエリを作成しようとして、非常に苦労しています。

次に、未払いの最大額が一番上になるように結果を並べ替える必要があります。

これまでのところ、私はこのクエリを思いつきました

SELECT 
  j.job_id, 
  c.name + c.surname, 
  c.phone, 
  c.email_address, 
  SUM(jt.cost * (DATEDIFF(mi, timestart, timecomplete)))
FROM client as c 
LEFT OUTER JOIN job AS j ON c.tax_file_number = c.tax_file_number
LEFT OUTER JOIN job_type AS jt ON j.jobtype_id = jt.jobtype_id
WHERE SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart) > 500
ORDER BY SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart))) DESC;

どんな助けでもいただければ幸いです

4

3 に答える 3

1

要件が明確ではないため、ここで推測しますが、これが必要だと思います:

WITH jobinfo as
(
   SELECT j.client_id, SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart))) as cost
   FROM job as j
   JOIN job_type as jt ON j.jobtype_id = jt.jobtype_id
   GROUP BY j.client_id
)
SELECT 
  c.client_id,
  c.name + c.surname, 
  c.phone, 
  c.email_address, 
  j.cost
FROM client as c 
JOIN jobinfo j ON c.client_id= j.client_id
WHERE j.cost > 500
ORDER BY j.cost DESC
于 2013-11-03T16:40:30.007 に答える
0
declare _sum int, 

set _sum= (select SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart))) from job_type) SELECT j.job_id, c.name + c.surname, c.phone, c.email_address, SUM(jt. cost * (DATEDIFF(mi, timestart, timecomplete))) FROM client as c LEFT OUTER JOIN job AS j ON c.tax_file_number = c.tax_file_number LEFT OUTER JOIN job_type AS jt ON j.jobtype_id = jt.jobtype_id WHERE _sum > 500

于 2013-11-03T16:54:36.820 に答える
0

以下をお試しください。集計関数 ( SUMCOUNTなど) はWHERE句では許可されていませんHAVING。それらに使用する必要があります。

SELECT 
  j.job_id, 
  c.name + c.surname, 
  c.phone, 
  c.email_address, 
  SUM(jt.cost * (DATEDIFF(mi, timestart, timecomplete)))
FROM client as c 
LEFT OUTER JOIN job AS j ON a.tax_file_number = c.tax_file_number
LEFT OUTER JOIN job_type AS jt ON j.jobtype_id = jt.jobtype_id
HAVING SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart) > 500
ORDER BY SUM(jt.cost * (DATEDIFF(mi, timecomplete, timestart))) DESC;

編集: 修正ON a.tax_file_number = c.tax_file_number

于 2013-11-03T17:12:29.637 に答える