Having

basic

Contoh Having dasar - memfilter hasil agregasi

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-basic",
  "description": "Contoh Having dasar - memfilter hasil agregasi",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": ">",
          "value": 5000
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

between

Contoh Having dengan operator BETWEEN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-between",
  "description": "Contoh Having dengan operator BETWEEN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": "between",
          "value": [
            5000,
            12000
          ]
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

in-array

Contoh Having dengan operator IN array

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-in-array",
  "description": "Contoh Having dengan operator IN array",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "department",
          "aggr": {
            "func": "min"
          },
          "op": "in",
          "value": [
            "HR",
            "Engineering"
          ]
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

in-single

Contoh Having dengan satu nilai IN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-in-single",
  "description": "Contoh Having dengan satu nilai IN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "department",
          "aggr": {
            "func": "min"
          },
          "op": "in",
          "value": "HR"
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

is-not-null

Contoh Having dengan operator IS NOT NULL

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-is-not-null",
  "description": "Contoh Having dengan operator IS NOT NULL",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": "is not null"
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": null
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": null
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

is-null

Contoh Having dengan operator IS NULL

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-is-null",
  "description": "Contoh Having dengan operator IS NULL",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": "is null"
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": null
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": null
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

max

Contoh Having dengan fungsi agregasi MAX

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-max",
  "description": "Contoh Having dengan fungsi agregasi MAX",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Max Salary",
        "aggr": {
          "func": "max"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "max"
          },
          "op": "=",
          "value": 9000
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

min

Contoh Having dengan fungsi agregasi MIN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-min",
  "description": "Contoh Having dengan fungsi agregasi MIN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Min Salary",
        "aggr": {
          "func": "min"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "min"
          },
          "op": "=",
          "value": 5000
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

multi-conditions

Contoh Having dengan beberapa kondisi (AND/OR)

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-multi",
  "description": "Contoh Having dengan beberapa kondisi (AND/OR)",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      },
      {
        "field": "salary",
        "alias": "Count",
        "aggr": {
          "func": "count"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": ">",
          "value": 5000
        },
        {
          "field": "salary",
          "aggr": {
            "func": "count"
          },
          "op": ">",
          "value": 1
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

not-between

Contoh Having dengan operator NOT BETWEEN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-not-between",
  "description": "Contoh Having dengan operator NOT BETWEEN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": "not between",
          "value": [
            5000,
            12000
          ]
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

not-in-single

Contoh Having dengan satu nilai NOT IN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-not-in-single",
  "description": "Contoh Having dengan satu nilai NOT IN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "department",
          "aggr": {
            "func": "min"
          },
          "op": "not in",
          "value": "HR"
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

not-in

Contoh Having dengan operator NOT IN

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-not-in",
  "description": "Contoh Having dengan operator NOT IN",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "and",
      "conditions": [
        {
          "field": "department",
          "aggr": {
            "func": "min"
          },
          "op": "not in",
          "value": [
            "Marketing"
          ]
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}

or-conditions

Contoh Having dengan kondisi OR

import { VQueryResultRender } from '@components'

export default () => {
  const vqueryConfig = {
  "datasetId": "having-or",
  "description": "Contoh Having dengan kondisi OR",
  "vquery": {
    "select": [
      "department",
      {
        "field": "salary",
        "alias": "Total Salary",
        "aggr": {
          "func": "sum"
        }
      }
    ],
    "groupBy": [
      "department"
    ],
    "having": {
      "op": "or",
      "conditions": [
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": ">",
          "value": 15000
        },
        {
          "field": "salary",
          "aggr": {
            "func": "sum"
          },
          "op": "<",
          "value": 5000
        }
      ]
    }
  },
  "dataset": [
    {
      "id": 1,
      "name": "Alice",
      "age": 25,
      "department": "HR",
      "salary": 5000
    },
    {
      "id": 2,
      "name": "Bob",
      "age": 30,
      "department": "Engineering",
      "salary": 8000
    },
    {
      "id": 3,
      "name": "Charlie",
      "age": 35,
      "department": "Engineering",
      "salary": 9000
    },
    {
      "id": 4,
      "name": "David",
      "age": 40,
      "department": "HR",
      "salary": 6000
    },
    {
      "id": 5,
      "name": "Eve",
      "age": 22,
      "department": "Marketing",
      "salary": 4000
    }
  ],
  "schema": [
    {
      "name": "id",
      "type": "number"
    },
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    },
    {
      "name": "department",
      "type": "string"
    },
    {
      "name": "salary",
      "type": "number"
    }
  ]
}

  return <VQueryResultRender vqueryConfig={vqueryConfig} />
}