แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜ Grafana-แƒจแƒ˜ [+ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ—]

แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜ Grafana-แƒจแƒ˜ [+ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ—]

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒžแƒ แƒแƒ›แƒแƒžแƒฃแƒšแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ Grafana-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒฎแƒ”แƒšแƒ˜ แƒจแƒ”แƒฃแƒฌแƒงแƒแƒก - แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—. แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก 10 แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒ› แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒก แƒ’แƒแƒ“แƒแƒแƒญแƒแƒ แƒ‘แƒ. แƒ›แƒแƒ—, แƒ•แƒ˜แƒœแƒช แƒ›แƒกแƒ’แƒแƒ•แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก แƒฌแƒแƒแƒฌแƒงแƒ“แƒ, แƒ˜แƒชแƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ”แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒ˜ แƒจแƒแƒ แƒก แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ’แƒ•แƒแƒ แƒแƒ•แƒแƒœแƒ˜.

แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒฎแƒ”แƒšแƒ˜ แƒ›แƒแƒแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒกแƒแƒ›แƒฃแƒ“แƒแƒ›แƒแƒ“ "แƒฉแƒแƒ”แƒซแƒ˜แƒœแƒ". แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒ“แƒแƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ˜ แƒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ”แƒฏแƒ”แƒ  แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ แƒ”แƒฅแƒ•แƒกแƒ˜ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜. แƒ•แƒ˜แƒฆแƒแƒชแƒแƒก แƒคแƒฃแƒšแƒ˜ แƒ›แƒแƒแƒฅแƒ•แƒก แƒกแƒแƒšแƒแƒ แƒแƒจแƒ˜, แƒ•แƒ˜แƒฆแƒแƒช แƒ™แƒ˜ แƒฃแƒกแƒแƒกแƒงแƒ˜แƒ“แƒšแƒแƒ“ แƒ›แƒแƒ•แƒ˜แƒ“แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜. แƒ“แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒกแƒ’แƒแƒœ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ.

แƒ˜แƒกแƒ”แƒ— แƒ“แƒ˜แƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒ˜แƒช แƒฉแƒ•แƒ”แƒœแƒ˜แƒ, แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒ›แƒ˜แƒ™แƒ แƒ-แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒฃแƒแƒ–แƒ แƒแƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒขแƒ”แƒœแƒ“แƒ”แƒœแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒญแƒ”แƒ แƒ แƒ“แƒ แƒ“แƒ˜แƒ“ แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ“แƒ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ แƒแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒ–แƒฃแƒกแƒขแƒแƒ“.

แƒ แƒ”แƒ–แƒ˜แƒฃแƒ›แƒ”

  1. แƒ แƒ แƒแƒ แƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ?
  2. แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ SQL-แƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.
  3. แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒ’แƒ แƒแƒคแƒแƒœแƒ.

แƒ—แƒฃ แƒฃแƒ™แƒ•แƒ” แƒ˜แƒชแƒ˜แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ”แƒก SQL-แƒจแƒ˜, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ‘แƒแƒšแƒ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒ–แƒ”.

1. แƒ แƒ แƒแƒ แƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ?

แƒ™แƒแƒฐแƒแƒ แƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก (แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก) แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒแƒ–แƒ”. แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ˜แƒ› แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒแƒœ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒœแƒ“แƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒขแƒแƒ แƒ“แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ’แƒแƒ˜แƒ’แƒ”:

  • แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒจแƒ”แƒซแƒ”แƒœแƒ˜แƒก แƒแƒ แƒฎแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ”แƒ–แƒ”;
  • แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒแƒ–แƒ”;
  • แƒ แƒแƒ’แƒแƒ  แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ X แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ› แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ”แƒ–แƒ” แƒ’แƒแƒกแƒฃแƒš แƒฌแƒ”แƒšแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—.

2. แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ SQL-แƒจแƒ˜?

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ“แƒ แƒกแƒแƒฆแƒ˜ แƒแƒ–แƒ แƒ˜ แƒแƒ  แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒ“แƒ’แƒ˜แƒœแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒฅ - แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒœแƒแƒ’แƒแƒ•แƒกแƒแƒงแƒ แƒ”แƒšแƒ–แƒ”, แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ แƒฌแƒ”แƒšแƒ˜แƒฌแƒแƒ“แƒœแƒแƒฎแƒ”แƒ•แƒ แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜: 1200 แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ 53 แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ— แƒ—แƒแƒ›แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ”แƒซแƒšแƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ— แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ MySQL-แƒ˜แƒ— แƒ“แƒ Grafana-แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ—แƒแƒ•แƒแƒ“ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒœแƒ˜แƒชแƒแƒ“แƒแƒ— แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜. แƒ‘แƒ›แƒฃแƒšแƒ˜ GitHub-แƒ–แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก.

แƒ“แƒ แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒแƒ—, แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ แƒ˜แƒฅ แƒ“แƒ แƒฎแƒแƒ แƒฏแƒแƒ•แƒ”แƒœ แƒคแƒฃแƒšแƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ”. แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒขแƒแƒ•แƒ”แƒ‘แƒ”แƒœ แƒ—แƒแƒ•แƒก. แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ˜แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœ แƒฎแƒแƒœแƒก แƒชแƒฎแƒแƒ•แƒ แƒแƒ‘แƒ”แƒœ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒ— แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก 1-แƒšแƒ˜ แƒ“แƒ แƒ›แƒ”-2 แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒแƒ› แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ–แƒ” แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ’แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ•แƒแƒจแƒ”แƒœแƒแƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒ–แƒแƒ›แƒแƒ•แƒ— แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒแƒก แƒฎแƒแƒ แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒงแƒแƒ•แƒ”แƒš แƒ—แƒ•แƒ”แƒจแƒ˜. แƒฎแƒแƒ แƒฏแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜, แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒฎแƒแƒ“แƒ˜ แƒแƒœ แƒ“แƒ แƒแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฎแƒ•แƒ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ.

Raw แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ MySQL-แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒฎแƒ•แƒ DBMS-แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก.

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ - แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜:

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ
แฒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜

1
2019-01-01

2
2019-02-01

3
2019-02-10

4
2019-03-01

แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ - แƒ‘แƒ˜แƒšแƒ˜แƒœแƒ’แƒ˜:

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ
แƒ—แƒแƒ แƒ˜แƒฆแƒ˜
Sum

1
2019-01-02
11

1
2019-02-22
11

2
2019-02-12
12

3
2019-02-11
13

3
2019-03-11
13

4
2019-03-01
14

4
2019-03-02
14

แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒฉแƒแƒ›แƒแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜:

SELECT 
  b.userId, 
  b.Date,
  u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜:

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ
แƒ—แƒแƒ แƒ˜แƒฆแƒ˜
แฒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜

1
2019-01-02
2019-01-02

1
2019-02-22
2019-01-02

2
2019-02-12
2019-02-01

3
2019-02-11
2019-02-10

3
2019-03-11
2019-02-10

4
2019-03-01
2019-03-01

4
2019-03-02
2019-03-01

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒก แƒ—แƒ•แƒ”แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—; แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒ แƒ—แƒแƒ แƒ˜แƒฆแƒก แƒ•แƒแƒฅแƒชแƒ”แƒ•แƒ— แƒ—แƒ•แƒ”แƒ”แƒ‘แƒแƒ“:

DATE_FORMAT(Date, '%Y-%m')

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ—แƒ•แƒ” แƒ˜แƒงแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒ”แƒ‘แƒ”แƒขแƒ˜แƒก แƒ—แƒ•แƒ”แƒกแƒ แƒ“แƒ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ•แƒ”แƒก แƒจแƒแƒ แƒ˜แƒก. MySQL-แƒก แƒแƒฅแƒ•แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ PERIOD_DIFF() - แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒแƒ  แƒ—แƒ•แƒ”แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— PERIOD_DIFF() แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก:

SELECT
    b.userId,
    DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
    DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
    PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ
แƒ‘แƒ˜แƒšแƒ˜แƒœแƒ’แƒ˜แƒก แƒ—แƒ•แƒ”
แฒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜
MonthsDiff

1
2019-01
2019-01
0

1
2019-02
2019-01
1

2
2019-02
2019-02
0

3
2019-02
2019-02
0

3
2019-03
2019-02
1

4
2019-03
2019-03
0

4
2019-03
2019-03
0

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ—แƒ•แƒšแƒ˜แƒ— แƒงแƒแƒ•แƒ”แƒš แƒ—แƒ•แƒ”แƒจแƒ˜ แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก - แƒ•แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ— แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒก BillingMonth, RegistrationMonth แƒ“แƒ MonthsDiff แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—:

SELECT
    COUNT(DISTINCT(b.userId)) AS UsersCount,
    DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
    DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
    PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
GROUP BY BillingMonth, RegistrationMonth, MonthsDiff

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜:

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ
แƒ‘แƒ˜แƒšแƒ˜แƒœแƒ’แƒ˜แƒก แƒ—แƒ•แƒ”
แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ•แƒ”
MonthsDiff

1
2019-01
2019-01
0

1
2019-02
2019-01
1

2
2019-02
2019-02
0

1
2019-03
2019-02
1

1
2019-03
2019-03
0

แƒ˜แƒแƒœแƒ•แƒแƒ แƒจแƒ˜, แƒ—แƒ”แƒ‘แƒ”แƒ แƒ•แƒแƒšแƒกแƒ แƒ“แƒ แƒ›แƒแƒ แƒขแƒจแƒ˜ แƒ—แƒ˜แƒ—แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ - MonthsDiff = 0. แƒ”แƒ แƒ—แƒ˜ แƒ˜แƒแƒœแƒ•แƒ แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ˜แƒงแƒ แƒ—แƒ”แƒ‘แƒ”แƒ แƒ•แƒแƒšแƒจแƒ˜ - RegistrationMonth = 2019-01, BillingMonth = 2019-02, แƒฎแƒแƒšแƒ แƒ—แƒ”แƒ‘แƒ”แƒ แƒ•แƒšแƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ˜แƒงแƒ แƒ›แƒแƒ แƒขแƒจแƒ˜.

แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜แƒ, แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ”แƒ— แƒฉแƒแƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒ˜แƒ“ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒจแƒ˜.

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒ’แƒ แƒแƒคแƒแƒœแƒแƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒชแƒ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒ, แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒแƒฆแƒแƒ  แƒแƒ แƒ˜แƒก. แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ”แƒฅแƒกแƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก Excel-แƒจแƒ˜ แƒ“แƒ แƒฉแƒแƒ›แƒแƒงแƒแƒšแƒ˜แƒ‘แƒ“แƒ”แƒก แƒšแƒแƒ›แƒแƒ– แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜!

แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ’แƒ แƒแƒคแƒแƒœแƒ.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก Grafana-แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒ’แƒแƒ“แƒแƒกแƒแƒงแƒ•แƒแƒœแƒแƒ“:

SELECT
  DATE_ADD(CONCAT(s.RegistrationMonth, '-01'), INTERVAL s.MonthsDiff MONTH) AS time_sec,
  SUM(s.Users) AS value,
  s.RegistrationMonth AS metric
FROM (
  ## ัั‚ะฐั€ั‹ะน ะทะฐะฟั€ะพั, ะฒะพะทะฒั€ะฐั‰ะฐัŽั‰ะธะน ะบะพะณะพั€ั‚ั‹
  SELECT 
    COUNT(DISTINCT(b.userId)) AS Users, 
    DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
    DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
    PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
  FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
  WHERE
    u.RegistrationDate BETWEEN '2018-01-01' AND CURRENT_DATE
  GROUP BY 
    BillingMonth, RegistrationMonth, MonthsDiff 
) AS s
GROUP BY 
  time_sec, metric

แƒ“แƒ แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ Grafana-แƒ–แƒ”.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ“แƒ”แƒ›แƒ:

แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ™แƒแƒฐแƒแƒ แƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜ Grafana-แƒจแƒ˜ [+ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ—]

แƒฎแƒ”แƒšแƒ˜แƒ— แƒจแƒ”แƒ”แƒฎแƒ”แƒ—:

GitHub แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ— แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ MySQL-แƒ˜แƒ— แƒ“แƒ Grafana-แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒจแƒ˜. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฌแƒ”แƒšแƒ˜แƒฌแƒแƒ“แƒœแƒแƒฎแƒ”แƒ•แƒ แƒ˜แƒก แƒ“แƒ”แƒ›แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, 2018 แƒฌแƒšแƒ˜แƒก แƒ˜แƒแƒœแƒ•แƒ แƒ˜แƒ“แƒแƒœ 2019 แƒฌแƒšแƒ˜แƒก แƒ˜แƒ•แƒšแƒ˜แƒกแƒแƒ›แƒ“แƒ”.

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ› แƒกแƒฃแƒ แƒแƒ—แƒจแƒ˜.

PS แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜ แƒ™แƒแƒฐแƒแƒ แƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ SQL-แƒจแƒ˜:

https://chartio.com/resources/tutorials/performing-cohort-analysis-using-mysql/

https://www.holistics.io/blog/calculate-cohort-retention-analysis-with-sql/

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ