Shanraq.org Shanraq.org
Деректерді салыстырып тексеру: шешімге дейін сәйкессіздікті табу
IT

SQL: отбасы бюджетін болжамсыз есептеу 3-сабақ (барлығы 4)

Деректерді салыстырып тексеру: шешімге дейін сәйкессіздікті табу

Бақылау теңдігі, ықтимал қайталау және байланыс тексеруі арқылы толықтықты анықтаймыз.

Бұл не үшін қажет

Қатесіз орындалған сұрау деректің толық екенін дәлелдемейді. Бір түбіртекті екі рет импорттау сенімді көрінетін, бірақ қате қорытынды береді.

Бейне. Салыстырып тексеру — қойма шығысындағы таразы: жеке жазбалар дұрыс көрінсе де, жалпы салмақ сәйкес келуі керек.

Алдымен тұтас көрініс

SELECT happened_on, account_id, category_id, amount_tiyn, COUNT(*) AS copies
FROM transactions
GROUP BY happened_on, account_id, category_id, amount_tiyn, COALESCE(note, '')
HAVING COUNT(*) > 1;

Талдау

Қайталауды id теңдігі емес, пәндік ереже анықтайды; күні мен сомасы тең екі бөлек сатып алу болуы мүмкін. foreign_key_check бұзылған байланысты, integrity_check файл құрылымын табады, бірақ шығынның орынды екенін білмейді. Бір жолдың CHECK шарты тұтас ай ережесін тексермейді. Бастапқы қалдыққа кірісті қосып, шығынды алғанда есептелген қалдық шығуы тиіс.

Сабақ картасы

Деректерді салыстырып тексеру

Өз сөзіңізбен айтыңыз

  1. Сәйкестік неге тек ықтимал қайталауды көрсетеді?
  2. integrity_check пәндік тексеруден қалай ерекшеленеді?
  3. Бюджетті қандай теңдікпен салыстырамыз?

Тапсырма

Операция саны мен шығын сомасын жазып алыңыз, бір операцияны жаңа id-мен көшіріп қосып, оны қай тексерулер тапқанын көрсетіңіз.

Жобадағы орны

Салыстырып тексеру импорттан кейін және есепті жариялау алдында орындалады.

Жауаптар

Жауаптарды көрсету
SELECT COUNT(*) AS rows_total FROM transactions;
SELECT SUM(amount_tiyn) AS expense_tiyn
FROM transactions JOIN categories ON categories.id=category_id
WHERE kind='expense';

Дереккөздер

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.