count_bans.sql 783 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. PRAGMA DisableSimpleColumns;
  2. /* postgres can not */
  3. USE plato;
  4. $records = (
  5. SELECT
  6. key as ip,
  7. subkey AS recordType,
  8. Url::GetHost(value) AS host
  9. FROM spider_info
  10. );
  11. $results = (
  12. SELECT
  13. ip,
  14. host,
  15. count(*) AS request_count
  16. FROM $records
  17. WHERE host IS NOT NULL AND recordType == "RESULT"
  18. GROUP BY ip, host
  19. );
  20. $bans = (
  21. SELECT
  22. ip,
  23. host,
  24. count(*) AS fetcher_count
  25. FROM $records
  26. WHERE host IS NOT NULL AND recordType == "BAN_DETECTED"
  27. GROUP BY ip, host
  28. );
  29. SELECT
  30. results.ip AS ip,
  31. results.host AS host,
  32. results.request_count AS request_count,
  33. bans.fetcher_count AS fetcher_count
  34. FROM
  35. $results AS results
  36. INNER JOIN
  37. $bans AS bans
  38. ON bans.ip == results.ip
  39. AND bans.host == results.host
  40. ORDER BY fetcher_count DESC
  41. ;