#Having
#basic
Ví dụ Having cơ bản - lọc kết quả tổng hợp
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-basic",
"description": "Ví dụ Having cơ bản - lọc kết quả tổng hợp",
"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
Ví dụ Having với toán tử BETWEEN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-between",
"description": "Ví dụ Having với toán tử 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
Ví dụ Having với toán tử IN dạng mảng
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-in-array",
"description": "Ví dụ Having với toán tử IN dạng mảng",
"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
Ví dụ Having với một giá trị IN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-in-single",
"description": "Ví dụ Having với một giá trị 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
Ví dụ Having với toán tử IS NOT NULL
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-is-not-null",
"description": "Ví dụ Having với toán tử 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
Ví dụ Having với toán tử IS NULL
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-is-null",
"description": "Ví dụ Having với toán tử 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
Ví dụ Having với hàm tổng hợp MAX
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-max",
"description": "Ví dụ Having với hàm tổng hợp 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
Ví dụ Having với hàm tổng hợp MIN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-min",
"description": "Ví dụ Having với hàm tổng hợp 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
Ví dụ Having với nhiều điều kiện (AND/OR)
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-multi",
"description": "Ví dụ Having với nhiều điều kiện (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
Ví dụ Having với toán tử NOT BETWEEN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-not-between",
"description": "Ví dụ Having với toán tử 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
Ví dụ Having với một giá trị NOT IN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-not-in-single",
"description": "Ví dụ Having với một giá trị 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
Ví dụ Having với toán tử NOT IN
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-not-in",
"description": "Ví dụ Having với toán tử 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
Ví dụ Having với điều kiện OR
import { VQueryResultRender } from '@components'
export default () => {
const vqueryConfig = {
"datasetId": "having-or",
"description": "Ví dụ Having với điều kiện 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} />
}