Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. WITH
  2. z AS -- TODO better to use percentiles
  3. (
  4. SELECT
  5. tok.address,
  6. COUNT(tok.address) AS n,
  7. AVG(SAFE_CAST(tx.value AS NUMERIC)/POWER(10,CAST(tok.decimals AS NUMERIC))) AS mu,
  8. STDDEV(SAFE_CAST(tx.value AS NUMERIC)/POWER(10,CAST(tok.decimals AS NUMERIC))) AS sigma
  9. FROM `crypto-etl-ethereum-dev.crypto_ethereum.tokens` AS tok,
  10. `crypto-etl-ethereum-dev.crypto_ethereum.token_transfers` AS tx
  11. WHERE tx.token_address = tok.address
  12. AND CAST(tx.block_timestamp AS DATETIME) > DATETIME_SUB(CURRENT_DATETIME(), INTERVAL 1 DAY)
  13. GROUP BY tok.address
  14. HAVING n >= 3
  15. ),
  16. itx AS
  17. (
  18. SELECT transaction_hash AS id, from_address AS address, token_address AS token, value, lab.label
  19. FROM `crypto-etl-ethereum-dev.crypto_ethereum.token_transfers` AS tx,
  20. `crypto-etl-ethereum-dev.dataflow_sql.all_labels` AS lab
  21. WHERE tx.from_address = lab.address
  22. AND CAST(tx.block_timestamp AS DATETIME) > DATETIME_SUB(CURRENT_DATETIME(), INTERVAL 1 DAY)
  23. ),
  24. otx AS
  25. (
  26. SELECT transaction_hash AS id, to_address AS address, token_address AS token, value, lab.label
  27. FROM `crypto-etl-ethereum-dev.crypto_ethereum.token_transfers` AS tx,
  28. `crypto-etl-ethereum-dev.dataflow_sql.all_labels` AS lab
  29. WHERE tx.to_address = lab.address
  30. AND CAST(tx.block_timestamp AS DATETIME) > DATETIME_SUB(CURRENT_DATETIME(), INTERVAL 1 DAY)
  31. )
  32.  
  33. SELECT
  34. (CAST(itx.value AS NUMERIC)/POWER(10,CAST(tok.decimals AS NUMERIC)) - z.mu) / z.sigma AS z_score,
  35. tok.symbol,
  36. itx.address AS i_address,
  37. otx.address AS o_address,
  38. itx.label AS i_label,
  39. otx.label AS o_label,
  40. CAST(itx.value AS NUMERIC)/POWER(10,CAST(tok.decimals AS NUMERIC)) AS value
  41. FROM z, itx, otx, `crypto-etl-ethereum-dev.crypto_ethereum.tokens` AS tok
  42. WHERE TRUE
  43. AND z.sigma > 0
  44. AND itx.id = otx.id
  45. AND itx.token = tok.address
  46. AND z.address = tok.address
  47. AND otx.label NOT LIKE '%_hw' -- TODO factor this out to also be used in z-score calculations
  48. ORDER BY z_score DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement