查询语言.aggregate
引入相关类
- use Tests\Database\DatabaseTestCase as TestCase;
计算记录数量。
::: tip
可使用 findCount()
或者 count()->find()
来统计记录行。
:::
public function testBaseUse()
{
$connect = $this->createDatabaseConnectMock();
$sql = <<<'eot'
[
"SELECT COUNT(*) AS row_count FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
count()->
findOne(true)
)
);
$sql = <<<'eot'
[
"SELECT COUNT(`test`.`id`) AS row_count FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
count('id')->
1
)
$sql = <<<'eot'
[
"SELECT COUNT(`test`.`id`) AS count1 FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
count('id', 'count1')->
findOne(true),
2
)
);
$sql = <<<'eot'
[
"SELECT COUNT(`test`.`id`*50) AS count1 FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
count('{[id]*50}', 'count1')->
findOne(true),
3
)
);
}
计算平均值。
{
$sql = <<<'eot'
[
"SELECT MAX(`test`.`num`) AS max_value FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
max('num')->
findOne(true)
)
);
}
计算最小值。
计算合计。
public function testSum()
{
$connect = $this->createDatabaseConnectMock();
$sql = <<<'eot'
[
"SELECT SUM(`test`.`num`) AS sum_value FROM `test` LIMIT 1",
[],
false,
null,
null,
[]
]
eot;
$this->assertSame(
$sql,
$this->varJson(
$connect->table('test')->
sum('num')->
findOne(true)
)
);