Sobes.tech
Junior — Middle

Kāda ir atšķirība starp nosacījumiem WHERE un HAVING, strādājot ar SQL vaicājumiem?

sobes.tech AI

Atbilde no AI

WHERE un HAVING ir SQL nosacījumi ir, bet tie tiek piemēroti dažādos datu apstrādes posmos.

  • WHERE filtrē rindas pirms grupēšanas. To izmanto, lai atlasītu ierakstus pēc sākotnējiem datiem.
  • HAVING filtrē grupas, kas veidotas ar GROUP BY operatoru. To piemēro pēc agregācijas.

Piemērs:

SELECT nodaļa, COUNT(*) kā darbinieku_skaits
FROM darbinieki
WHERE alga > 50000  -- filtrē darbiniekus ar algu > 50000
GROUP BY nodaļa
HAVING COUNT(*) > 10      -- izvēlas nodaļas ar vairāk nekā 10 darbiniekiem

Šeit vispirms tiek atlasīti darbinieki ar algu virs 50000 (WHERE), tad dati tiek grupēti pēc nodaļām, un beigās tiek atlasītas tikai tās nodaļas, kurās ir vairāk nekā 10 darbinieku (HAVING).