按当前列和时间计算行数

问题描述 投票:0回答:1

我的查询有问题。我想在特定时间计算给定列中特定短语的出现次数。

这是我的表:

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"
  ]
mysql
1个回答
0
投票

在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;

此查询基于您提供的表格和数据,但与标题或您在问题开头时所询问的内容之间的关系是一个谜。

© www.soinside.com 2019 - 2024. All rights reserved.