我正在尝试根据Status
计算表中的记录+--------|-----------|-------------+
| id | Record | Status |
|--------|-----------|-------------|
| 1 | 20 | A |
|--------|-----------|-------------|
| 2 | 10 | A |
|--------|-----------|-------------|
| 3 | 15 | D |
+----------------------------------+
问题是即时使用SUM查询以及计数查询。
->select(DB::raw('SUM(Record) as commission, COUNT(Status) as status'))
->get()
现在这可行,但不是基于Statust结果。我尝试过以下操作无法正常工作。
->select(DB::raw('SUM(Record) as commission, COUNT(Status = A) as status'))
->get()
和
->select(DB::raw('SUM(Record) as commission, COUNT(Status) as status WHERE Status = "A" '))
->get()
和
->select(DB::raw('SUM(Record) as commission, COUNT(Status = "A ") as status'))
->get()
答案 0 :(得分:0)
改变 -
COUNT(STATUS = 'A')
要:
SUM(Status = 'A')
布尔表达式根据条件返回0/1
。 COUNT(0)
仍然会计为1,只有COUNT(NULL)
不会向计数器添加1。另一方面,SUM()
在条件为真时将为1,在为假时为0。