首页 > 解决方案 > 查询 MySQL 以显示整数和排序

问题描述

我有一个包含这些列的 MySQL 数据库:

bookingdatetime (DateTime)
promo (Varchar)

我想查询数据库以计算使用的不同促销代码的数量(如果促销行不为空)并给出如下输出:

promo               amount appeared that month    
example - 01/20     13

<promocode - mm/yy> <number of times that code was used in that month>

这是我到目前为止所拥有的:

SELECT DATE_FORMAT(bookingdatetime, '%m/%y') `promo`, 
       SUM(promo != '') 'count'
FROM `reservations`
WHERE pickuploc = 'la'
GROUP BY DATE_FORMAT(bookingdatetime, '%m/%y'), YEAR(bookingdatetime)
ORDER BY YEAR(bookingdatetime), DATE_FORMAT(bookingdatetime, '%m/%y')

我需要在 %m%y 之前获取促销中使用的促销代码,并且我不需要显示 count 是否有 0 个整数。

标签: mysql

解决方案


这应该可以解决问题:

SELECT
  CONCAT(promo, ' - ', DATE_FORMAT(bookingdatetime, '%m/%y')) AS promo,
  COUNT(*) AS count
FROM reservations
WHERE pickuploc = 'la'
  AND COALESCE(promo, '') <> ''
GROUP BY
  DATE_FORMAT(bookingdatetime, '%m/%y'),
  promo
HAVING COUNT(*) > 0
ORDER BY
  DATE_FORMAT(bookingdatetime, '%y'),
  DATE_FORMAT(bookingdatetime, '%m')

样本输出:

promo         count
foo - 01/19   2
bar - 01/19   1
foo - 02/19   2
bar - 03/19   1
foo - 03/19   1

SQL 小提琴示例:http ://sqlfiddle.com/#!9/86083/5


推荐阅读