pub enum AggArg {
Star,
Var(String),
Prop {
var: String,
field: String,
},
Distinct(Box<AggArg>),
}Expand description
Argument to an aggregate function.
Variants§
Star
COUNT(*) — every matched row counts regardless of binding.
Var(String)
COUNT(var) — counts rows where var is bound (non-null).
Prop
SUM(var.field), AVG(var.field), etc.
Distinct(Box<AggArg>)
COUNT(DISTINCT var) / COLLECT(DISTINCT var.field) — the inner
argument is fed to the accumulator at most once per distinct value
within a group.
This is what makes an N-way relation intersection expressible: a
company reached by three edge types yields three rows per talent, and
only count(DISTINCT t) counts the talent once. The parser rejects
DISTINCT * and nested DISTINCT, so the inner argument is always
Star-free and one level deep.
Trait Implementations§
impl StructuralPartialEq for AggArg
Auto Trait Implementations§
impl Freeze for AggArg
impl RefUnwindSafe for AggArg
impl Send for AggArg
impl Sync for AggArg
impl Unpin for AggArg
impl UnsafeUnpin for AggArg
impl UnwindSafe for AggArg
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.