diff --git a/esqueleto.cabal b/esqueleto.cabal
--- a/esqueleto.cabal
+++ b/esqueleto.cabal
@@ -1,5 +1,5 @@
 name:                esqueleto
-version:             1.2.3
+version:             1.2.4
 synopsis:            Bare bones, type-safe EDSL for SQL queries on persistent backends.
 homepage:            https://github.com/meteficha/esqueleto
 license:             BSD3
diff --git a/src/Database/Esqueleto.hs b/src/Database/Esqueleto.hs
--- a/src/Database/Esqueleto.hs
+++ b/src/Database/Esqueleto.hs
@@ -43,6 +43,7 @@
              , val, isNothing, just, nothing, countRows, count, not_
              , (==.), (>=.), (>.), (<=.), (<.), (!=.), (&&.), (||.)
              , (+.), (-.), (/.), (*.)
+             , random_, sum_, round_, ceiling_, floor_, avg_, min_, max_
              , like, (%), concat_, (++.)
              , subList_select, subList_selectDistinct, valList
              , in_, notIn, exists, notExists
diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs
--- a/src/Database/Esqueleto/Internal/Language.hs
+++ b/src/Database/Esqueleto/Internal/Language.hs
@@ -231,6 +231,16 @@
   (/.)  :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
   (*.)  :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
 
+
+  random_  :: PersistField a => expr (Value a)
+  round_   :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  ceiling_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  floor_   :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  sum_     :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  min_     :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  max_     :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+  avg_     :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+
   -- | @LIKE@ operator.
   like :: (PersistField s, IsString s) => expr (Value s) -> expr (Value s) -> expr (Value Bool)
   -- | The string @'%'@.  May be useful while using 'like' and
diff --git a/src/Database/Esqueleto/Internal/Sql.hs b/src/Database/Esqueleto/Internal/Sql.hs
--- a/src/Database/Esqueleto/Internal/Sql.hs
+++ b/src/Database/Esqueleto/Internal/Sql.hs
@@ -333,6 +333,15 @@
   (/.)  = unsafeSqlBinOp " / "
   (*.)  = unsafeSqlBinOp " * "
 
+  random_  = unsafeSqlValue "RANDOM()"
+  sum_     = unsafeSqlFunction "SUM"
+  round_   = unsafeSqlFunction "ROUND"
+  ceiling_ = unsafeSqlFunction "CEILING"
+  floor_   = unsafeSqlFunction "FLOOR"
+  avg_     = unsafeSqlFunction "AVG"
+  min_     = unsafeSqlFunction "MIN"
+  max_     = unsafeSqlFunction "MAX"
+
   like    = unsafeSqlBinOp    " LIKE "
   (%)     = unsafeSqlValue    "'%'"
   concat_ = unsafeSqlFunction "CONCAT"
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -265,6 +265,60 @@
                  return p
           liftIO $ ret `shouldBe` [ p3e ]
 
+      it "works with sum_" $
+        run $ do
+          _ <- insert' p1
+          _ <- insert' p2
+          _ <- insert' p3
+          _ <- insert' p4
+          ret <- select $
+                 from $ \p->
+                 return $ sum_ (p ^. PersonAge)
+          liftIO $ ret `shouldBe` [ Value (36 + 17 + 17 :: Int) ]
+
+      it "works with sum_" $
+        run $ do
+          _ <- insert' p1
+          _ <- insert' p2
+          _ <- insert' p3
+          _ <- insert' p4
+          ret <- select $
+                 from $ \p->
+                 return $ avg_ (p ^. PersonAge)
+          liftIO $ ret `shouldBe` [ Value ((36 + 17 + 17) / 3 :: Double) ]
+
+      it "works with min_" $
+        run $ do
+          _ <- insert' p1
+          _ <- insert' p2
+          _ <- insert' p3
+          _ <- insert' p4
+          ret <- select $
+                 from $ \p->
+                 return $ min_ (p ^. PersonAge)
+          liftIO $ ret `shouldBe` [ Value (17 :: Int) ]
+
+      it "works with max_" $
+        run $ do
+          _ <- insert' p1
+          _ <- insert' p2
+          _ <- insert' p3
+          _ <- insert' p4
+          ret <- select $
+                 from $ \p->
+                 return $ max_ (p ^. PersonAge)
+          liftIO $ ret `shouldBe` [ Value (36 :: Int) ]
+
+      it "works with random_" $
+        run $ do
+          ret <- select $ return (random_ :: SqlExpr (Value Int))
+          return ()
+
+      it "works with round_" $
+        run $ do
+          ret <- select $ return $ round_ (val (16.2 :: Double))
+          liftIO $ ret `shouldBe` [ Value (16 :: Double) ]
+
       it "works with isNothing" $
         run $ do
           _   <- insert' p1
