MySQL: Wie ein Select-Element als ‚y‘ Umschreiben dann, dass später unter Verwendung von in einer where-Anweisung

Regenbogen:

Also, was im versuchend zu tun ist dies aber dies nicht funktioniert:

Select count(staffno)as total_staff,avg(salary),branchno
From staff
Where total_staff > 1
Group by branchno

Hier ist ein weiteres Beispiel:

Select salary,salary*1.015 as proposed_salary
From staff
Where proposed_salary > 50000
GMB:

Sie können keine Aggregatausdruck (Verwendung sum(), count()...) in der whereKlausel der Abfrage. Diese Klausel wird ausgewertet , bevor Reihen gruppiert werden durch die group byKlausel, so dass die Aggregate sind noch nicht verfügbar.

In SQL, das ist der Zweck der havingKlausel:

select count(staffno) as total_staff, avg(salary), branchno
from staff
having count(staffno) > 1 -- MySQL also allows "total_staff > 1"
group by branchno

Wie für die zweite Abfrage: die Alias in der definierten selectKlausel ist in der nicht verfügbar whereKlausel entweder (aus dem gleichen Grunde wie oben). Sie können den Ausdruck wiederholen:

select salary, salary * 1.015 as proposed_salary
from staff
where salary * 1.015 > 50000

Oder Sie können eine abgeleitete Tabelle (CTE oder Unterabfrage) verwenden:

select *
from (
    select salary, salary * 1.015 as proposed_salary
    from staff
) t
where proposed_salary > 5000

Ich denke du magst

Origin http://43.154.161.224:23101/article/api/json?id=373255&siteId=1
Empfohlen
Rangfolge