Блог

SQL-сұраулардағы сүзгілер

Юрий Мельников

Дерекқордағы сұраулар санын азайтатын сүзгілер туралы қысқаша жазба.

Айтқандай, өмір бойы үйренесің. Мен де бұрын білмеген SQL-дің жаңа функциясын аштым: COUNT сұрауларындағы сүзгілер. Бірақ бәрін ретімен айтайық.

Көптеген жобаларымда мен сирек COUNT сұрауларын жасайтынмын. Егер жасасам, тек бір мән бойынша ғана. Неге екенін білмеймін, бірақ солай болатын.

Бүгін маған бір кестеден бірнеше мәндерді санау керек болды: жалпы сұраулар, сәтті сұраулар және қате сұраулар.

WHERE шартымен үш сұрау жасау — ең жақсы идея емес, себебі олардың саны эндпоинттер санына көбейтілді, сондықтан бір бетті жүктеу үшін оннан астам COUNT болуы мүмкін, бұл жақсы емес.

Шешімді тез таптым: FILTER кілт сөзін пайдалану:

SELECT COUNT(*) AS total,
COUNT(*) FILTER (WHERE status = 'done') AS done,
COUNT(*) FILTER (WHERE status = 'failed') AS failed
FROM requests

Нәтижесінде — бір сұрау, деректер бойынша бір өту және SUM(CASE WHEN ...) жоқ ұқыпты, оқылатын SQL.

Әрдайым таныс құралдарда өмірді айтарлықтай жеңілдететін функциялар бар екеніне көзім жетеді. Ең бастысы — оларды іздеуді тоқтатпау 😊.