我的查询有问题。我想计算特定时间特定列中特定短语的出现次数。
这是我的 table :
CREATE TABLE `table` (
`id` int(11) NOT NULL,
`prodId` int(11) NOT NULL,
`bookingAt` datetime NOT NULL,
`equipmentType` varchar(30) NOT NULL,
`shippingAt` datetime DEFAULT NULL
)
我有一个正在检查库存收据数量的有效查询:
SELECT g1.equipmentType,COUNT(*) as count FROM table g1
WHERE g1.shippingAt IS NULL AND
g1.bookingAt BETWEEN :from AND :to GROUP BY g1.equipmentType
但我不知道如何构建已发送产品的查询:( 表中的示例数据:
INSERT INTO `table` (`id`, `prodId`, `bookingAt`, `equipmentType`, `shippingAt`) VALUES
(1, 9911199, '2018-04-05 09:30:03', 'Type1','2018-04-05 14:00:00'),
(2, 9911100, '2018-04-05 08:00:00', 'Type1','2018-04-05 14:10:00'),
(3, 1234563, '2018-04-05 10:05:40', 'Type2', NULL);
我的查询的工作结果(预订):
array [
0 => array [
"equipmentType" => "Type2"
"count" => "1"
]
预期结果(发货):
array [
0 => array [
"equipmentType" => "Type1"
"count" => "2"
]
最佳答案
在 ShippingAt 上的 NULL 测试中添加“NOT”将为您提供已发货的产品。
SELECT g1.equipmentType,COUNT(*) as count
FROM table g1
WHERE g1.shippingAt IS NOT NULL
AND g1.bookingAt BETWEEN :from AND :to
GROUP BY g1.equipmentType;
此查询基于您提供的表格和数据,但它与标题或您在问题开始时询问的内容有何关系是一个谜。
关于mysql - 按当前列和时间计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49670927/