我试图弄清楚我的用户的一些滑动窗口统计信息.我有一个包含用户的表,以及created_at和verified_at等列.对于每个月,我想知道有多少用户注册了(由created_at的date_trunc创建的一个简单组),然后是那些人,在我的滑动窗口中验证了多少(称为60天).
我想做一个SQL查询,给我一些像:
Month | Registered | Verified in 60 days
Jan 2009 | 1543 | 107
Feb 2009 | 2000 | 250
Run Code Online (Sandbox Code Playgroud)
我正在使用postgresql.我开始看sum(case ...),但我不知道我是否可以让我的情况以某种方式依赖于date_trunc.
当然,这不起作用,但这里的想法是:
SELECT DATE_TRUNC('month', created_at) as month,
COUNT(*) as registered,
SUM(CASE WHEN verified_at < month+60 THEN 1 ELSE 0 END) as verified
FROM users
GROUP BY DATE_TRUNC('month', created_at)
Run Code Online (Sandbox Code Playgroud) final int a = 1;
final int b;
b = 2;
final int x = 0;
switch (x) {
case a:break; // ok
case b:break; // compiler error: Constant expression required
}
/* COMPILER RESULT:
constant expression required
case b:break;
^
1 error
*/
Run Code Online (Sandbox Code Playgroud)
为什么我会遇到这种错误?如果我愿意final int b = 2,一切正常.
我想知道如何将字符串转换为javascript中的pascal case字符串(最常见的是regex).
转换示例:
有关Pascal Case的更多信息,请查看此链接
如果我有Map[String,String]("url" -> "xxx", "title" -> "yyy"),有没有办法将其一般转换为case class Image(url:String, title:String)?
我可以写一个帮手:
object Image{
def fromMap(params:Map[String,String]) = Image(url=params("url"), title=params("title"))
}
Run Code Online (Sandbox Code Playgroud)
但有没有办法一次性写一次地图到任何案例类?
我正在学习Scala,我在设计案例类时遇到了一些问题.我需要两个具有相同属性的案例类.所以我认为从一个定义这些属性的抽象基类继承是个好主意.但是这段代码无法编译
abstract class Resource(val uri : String)
case class File(uri : String) extends Resource(uri)
case class Folder(uri : String) extends Resource(uri)
Run Code Online (Sandbox Code Playgroud)
因为uri在这种情况下类构造函数会覆盖uri基类的属性.
设计这个的正确方法是什么?
我希望能够做这样的事情
val arr = Array[Resource](File("test"), Folder("test2"))
arr.foreach { r : Resource => r match {
case f : File => println("It's a file")
case f : Folder => println("It's a folder")
} }
Run Code Online (Sandbox Code Playgroud)
"等效"Java代码应该是这样的
abstract class Resource {
private String uri;
public Resource(String uri) {
this.uri = uri
}
public String getUri() { …Run Code Online (Sandbox Code Playgroud) 我花了一些时间,试图理解Clojure多方法.据我所知,主要的"亲"多方法论证是他们的灵活性,然而,我对为什么多方法比简单的if或case语句更好的论证感到困惑.请有人解释一下,多态性与过度的案例陈述之间的界限在哪里?
编辑:我应该更清楚这个问题,我对'if'语句比较感兴趣.非常感谢您的回答!
我第一次在SQL语句中使用CASE Logic.如果我删除CASE语句,一切都有效,所以SQL没有它就有效.
我需要根据几件事来计算物品总价.
如果"销售价格" 有效并且"期权增加"有一个值,则总数为:数量*(销售价格+期权增加)
如果"销售价格无效且 "选项增加"有一个值,则总数为:数量*(价格+期权增加)
如果"销售价格" 处于活动状态且 "期权增加"没有值,则总计为:数量*销售价格
如果"销售价格无效且 "选项增加"没有价值,则总数为:数量*价格
如果未添加任何选项,则输出中tblproduct_options.option_upcharge的值为NULL.
谢谢您的帮助.
布雷特
这是我的SQL:
SELECT tblshopping_cart.session_id, tblshopping_cart.product_id, tblshopping_cart.product_qty, tblshopping_cart.product_option, tblproducts.product_title, tblproducts.product_price, tblproducts.product_sale_price_status, tblproducts.product_sale_price, tblproduct_options.option_text, tblproduct_options.option_upcharge,
CASE
WHEN (tblproducts.product_sale_price_status = 'Y')
CASE
WHEN (tblproduct_options.option_upcharge IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_sale_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_sale_price)
END
ELSE
CASE
WHEN (tblproduct_options.option_upchage IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_price)
END
END AS product_total
FROM tblshopping_cart
INNER JOIN tblproducts …Run Code Online (Sandbox Code Playgroud) 在Scala中,您不需要使用"new"来创建新的"案例类"是什么原因?我现在试着寻找一段时间没有答案.
我正在编写一个bash脚本,需要将字符串转换为小写.问题是我在mac上这样做,所以'tr'不可用.我怎么能在mac上这样做呢?
我试图解决的问题是我的脚本需要识别扩展名是.gif还是.jpg - 我不想检查.jpeg,.jPeg,.JPEG,.JPeg等等...如果有一种更聪明的方法,只需转换为小写并测试gif,jpg和jpeg,我都是耳朵:)
更新:
我是个白痴.这个mac"没有"这些基本文本转换程序的原因是因为我在做一些测试时用"hello"覆盖了PATH> _ <
我有以下查询在Postgres 9.1中很有用:
SELECT users.id, GREATEST(
COALESCE(MAX(messages.created_at), '2012-07-25 16:05:41.870117'),
COALESCE(MAX(phone_calls.created_at), '2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
ORDER BY latest_interaction DESC
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
但我想做的是这样的事情:
SELECT users.id, GREATEST(
COALESCE(MAX(messages.created_at), '2012-07-25 16:05:41.870117'),
COALESCE(MAX(phone_calls.created_at), '2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
ORDER BY
CASE WHEN(
latest_interaction > '2012-09-05 16:05:41.870117')
THEN …Run Code Online (Sandbox Code Playgroud) case ×10
class ×3
scala ×3
postgresql ×2
sql ×2
bash ×1
clojure ×1
final ×1
inheritance ×1
java ×1
javascript ×1
macos ×1
map ×1
multimethod ×1
mysql ×1
polymorphism ×1
regex ×1
sql-order-by ×1