функция подсчета sql - PullRequest
       3

функция подсчета sql

2 голосов
/ 03 апреля 2012

Привет, у меня есть три таблицы, и я хочу знать, сколько рабочих мест с заработной платой в 1000 человек было у сотрудника

В первом запросе SQL отображаются имена всех сотрудников, которые получили 1000 за работу

SELECT distinct first_name 
FROM employee, job, link 
WHERE job.wage = 1000 
  AND job.job_id = link.job_id and employee.employee_id = link.employee_id;

Второй запрос SQL дает мне общее количество всех сотрудников, сколько рабочих мест они выполнили за 1000

SELECT count(wage) 
FROM employee, job, link 
WHERE job.wage = 1000 
  AND job.job_id = link.job_id and employee.employee_id = link.employee_id;

Мне было интересно, есть ли способ объединить обазапросы, а также сделать второй для каждого конкретного сотрудника ???

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

вам может понадобиться использовать группу по ключевому слову

SELECT count(wage), first_name
FROM employee, job, link 
WHERE job.wage = 1000 
  AND job.job_id = link.job_id and employee.employee_id = link.employee_id;
GROUP BY first_name

недостаток в этом случае был бы, если бы у другого сотрудника было одно и то же имя, которое он посчитал бы одинаковым.

1 голос
/ 03 апреля 2012

Я бы также рекомендовал изменить неявные объединения на явные объединения:

SELECT employee.employee_id, first_name, last_name, count(wage) as wage_count
FROM 
    employee
    JOIN link ON employee.employee_id = link.employee_id
    JOIN job ON job.job_id = link.job_id
WHERE job.wage = 1000 
GROUP BY employee.employee_id, first_name, last_name
1 голос
/ 03 апреля 2012

Должно сработать что-то похожее на приведенное ниже, и вам не нужно больше указывать имя_первого имени.

select first_name, COUNT(wage) FROM employee, job, link  WHERE job.wage = 1000    AND job.job_id = link.job_id and employee.employee_id = link.employee_id
GROUP BY first_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...