adriaparcerisasosmo participation 2.2
    Updated 2023-05-10
    with
    proposals as (
    select distinct proposal_id,
    min(block_timestamp) as created_at
    from osmosis.core.fact_governance_submit_proposal group by 1
    ),
    validators as (
    select distinct validator,
    min(created_at) as first_participation
    from osmosis.core.fact_governance_validator_votes group by 1
    ),
    final as (
    SELECT
    distinct validator,
    count(distinct proposal_id) as possible_proposals
    from proposals x
    join validators y on x.created_at>first_participation
    group by 1
    ),
    validator_proposals as (
    SELECT y.VALIDATOR,
    y.possible_proposals,
    case when count(distinct proposal_id)>possible_proposals then possible_proposals else count(distinct proposal_id) end as proposals_participated
    FROM osmosis.core.fact_governance_validator_votes x
    join final y on x.validator=y.validator
    GROUP BY 1,2
    ),
    validator_votes as (
    SELECT a.VALIDATOR AS validator_a, b.VALIDATOR AS validator_b, COUNT(*) AS votes_together
    FROM osmosis.core.fact_governance_validator_votes a
    JOIN osmosis.core.fact_governance_validator_votes b ON a.PROPOSAL_ID = b.PROPOSAL_ID AND a.VALIDATOR < b.VALIDATOR
    WHERE a.VOTE = b.VOTE
    GROUP BY a.VALIDATOR, b.VALIDATOR
    )
    SELECT
    concat(vv.validator_a,'<->',vv.validator_b) as validator_pair,
    Run a query to Download Data