Skip to main content

HavingFilter

Specify and adjust single having condition.

SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).greaterThan(1000000))
.toAggregated();

Methods

The following are methods for HavingFilter.

FIELDS

COMPERATORS

FIELDS

with sobject field

Specify field that should be used in the having condition.

Signature

HavingFilter with(SObjectField field)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY City
HAVING City LIKE 'San%'
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).startsWith('San'))
.toAggregated();

with string field

Specify fields that should be used in the condition.

Signature

HavingFilter with(String field)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY City
HAVING City LIKE 'San%'
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.with('City').startsWith('San'))
.toAggregated();

count

Returns the number of rows matching the query criteria.

Signature

HavingFilter count(SObjectField field)

Example

SELECT LeadSource
FROM Lead
GROUP BY LeadSource
HAVING COUNT(Name) > 100
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.count(Lead.Name).greaterThan(100))
.toAggregated();

countDistinct

Returns the number of distinct non-null field values matching the query criteria.

Signature

HavingFilter countDistinct(SObjectField field)

Example

SELECT LeadSource
FROM Lead
GROUP BY LeadSource
HAVING COUNT_DISTINCT(Name) > 100
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.countDistinct(Lead.Name).greaterThan(100))
.toAggregated();

min

Returns the minimum value of a field.

Signature

HavingFilter min(SObjectField field)

Example

SELECT LeadSource
FROM Lead
GROUP BY LeadSource
HAVING MIN(NumberOfEmployees) > 100
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.min(Lead.NumberOfEmployees).greaterThan(100))
.toAggregated();

max

Returns the maximum value of a field.

Signature

HavingFilter min(SObjectField field)

Example

SELECT LeadSource
FROM Lead
GROUP BY LeadSource
HAVING MAX(NumberOfEmployees) < 100
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.max(Lead.NumberOfEmployees).lessThan(100))
.toAggregated();

sum

Returns the total sum of a numeric field.

Signature

HavingFilter min(SObjectField field)

Example

SELECT LeadSource
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) > 1000000
SOQL.of(Lead.SObjectType)
.with(Lead.LeadSource)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).greaterThan(1000000))
.toAggregated();

COMPERATORS

isNull

  • HAVING LeadSource = NULL

Signature

HavingFilter isNull()

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING LeadSource = NULL
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.with(Lead.LeadSource).isNull())
.toAggregated();

isNotNull

  • HAVING LeadSource != NULL

Signature

HavingFilter isNotNull()

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING LeadSource != NULL
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.with(Lead.LeadSource).isNotNull())
.toAggregated();

isTrue

  • HAVING IsConverted = TRUE

Signature

HavingFilter isTrue()

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY IsConverted
HAVING IsConverted = TRUE
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.IsConverted)
.have(SOQL.HavingFilter.with(Lead.IsConverted).isTrue())
.toAggregated();

isFalse

  • HAVING IsConverted = FALSE

Signature

HavingFilter isFalse()

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY IsConverted
HAVING IsConverted = FALSE
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.IsConverted)
.have(SOQL.HavingFilter.with(Lead.IsConverted).isFalse())
.toAggregated();

equal

  • HAVING City = 'Los Angeles'
  • HAVING SUM(AnnualRevenue) = 100000

Signature

HavingFilter equal(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING LeadSource = 'Web'

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) = 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).equal(10000))
.toAggregated();

SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.with(Lead.LeadSource).equal('Web'))
.toAggregated();

notEqual

  • HAVING City != 'Los Angeles'
  • HAVING SUM(AnnualRevenue) != 100000

Signature

HavingFilter notEqual(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING LeadSource != 'Web'

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) != 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).notEqual(10000))
.toAggregated();

SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.with(Lead.LeadSource).notEqual('Web'))
.toAggregated();

lessThan

  • HAVING SUM(AnnualRevenue) < 10000

Signature

HavingFilter lessThan(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) < 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).lessThan(10000))
.toAggregated();

greaterThan

  • HAVING SUM(AnnualRevenue) > 10000

Signature

HavingFilter greaterThan(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) > 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).greaterThan(10000))
.toAggregated();

lessOrEqual

  • HAVING SUM(AnnualRevenue) <= 10000

Signature

HavingFilter lessOrEqual(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) <= 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).lessOrEqual(10000))
.toAggregated();

greaterOrEqual

  • HAVING SUM(AnnualRevenue) >= 10000

Signature

HavingFilter greaterOrEqual(Object value)

Example

SELECT COUNT(Name)
FROM Lead
GROUP BY LeadSource
HAVING SUM(AnnualRevenue) >= 10000
SOQL.of(Lead.SObjectType)
.count(Lead.Name)
.groupBy(Lead.LeadSource)
.have(SOQL.HavingFilter.sum(Lead.AnnualRevenue).greaterOrEqual(10000))
.toAggregated();

contains

  • HAVING Name LIKE '%San%'

Signature

HavingFilter contains(String value)
HavingFilter contains(String prefix, String value, String suffix);

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING City LIKE '%San%'
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).contains('San'))
.toAggregated();

SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).contains('_', 'San', '%'))
.toAggregated();

notContains

  • HAVING NOT Name LIKE '%San%'

Signature

HavingFilter notContains(String value)
HavingFilter notContains(String prefix, String value, String suffix);

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING (NOT City LIKE '%San%')
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).notContains('San'))
.toAggregated();

SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).notContains('_', 'San', '%'))
.toAggregated();

startsWith

  • HAVING City LIKE 'San%'

Signature

HavingFilter startsWith(String value)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING City LIKE 'San%'
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).startsWith('San'))
.toAggregated();

notStartsWith

  • HAVING NOT City LIKE 'San%'

Signature

HavingFilter notStartsWith(String value)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING (NOT City LIKE 'San%')
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).notStartsWith('San'))
.toAggregated();

endsWith

  • HAVING City LIKE '%San'

Signature

HavingFilter endsWith(String value)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING City LIKE '%San'
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).endsWith('San'))
.toAggregated();

notEndsWith

  • HAVING NOT City LIKE '%San'

Signature

HavingFilter notEndsWith(String value)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING (NOT City LIKE '%San')
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).notEndsWith('San'))
.toAggregated();

isIn

  • HAVING City IN ('San Francisco', 'Los Angeles')

Signature

HavingFilter isIn(Iterable<Object> inList)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING City IN ('San Francisco', 'Los Angeles')
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).isIn(new List<String>{ 'San Francisco', 'Los Angeles' }))
.toAggregated();

notIn

  • HAVING City NOT IN ('San Francisco', 'Los Angeles')

Signature

HavingFilter notIn(Iterable<Object> inList)

Example

SELECT SUM(AnnualRevenue)
FROM Lead
GROUP BY City
HAVING City NOT IN ('San Francisco', 'Los Angeles')
SOQL.of(Lead.SObjectType)
.sum(Lead.AnnualRevenue)
.groupBy(Lead.City)
.have(SOQL.HavingFilter.with(Lead.City).notIn(new List<String>{ 'San Francisco', 'Los Angeles' }))
.toAggregated();