MYSQL GROUP BY对具有特定列的值

拉胡尔·辛格(Rahul Singh)

我在表格中有一个Period列,其值格式为Year-SemiQuarter例如2016 BQ12016 BQ22016 BQ3 ....... 2016 BQ8,其中BQ1BQ2会一起做1stQuarter为各自的一年。SImilar为他人

现在,我想将结果分组为

25美分硬币

我的桌子是这样的。将期间分为两列。


+====================+=============+================+==================================+=====+======================================+
| totalNumberOfUnits | productType | productSubType | SUBSTRING_INDEX(rsh.period, '-', 1  )  | SUBSTRING_INDEX(rsh.period, '-', -1) |
+====================+=============+================+==================================+=====+======================================+
|               1084 | Apartment   | High Rise      |                             2018       | BQ1                                  |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|               1284 | Apartment   | High Rise      |                             2018       | BQ2                                      |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|               1883 | Apartment   | High Rise      |                             2018       | BQ3                                       |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|                183 | Apartment   | High Rise      |                             2018       | BQ4                                      |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|                898 | Apartment   | High Rise      |                             2018       | BQ5                                       |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|               2377 | Apartment   | High Rise      |                             2018       | BQ7                                       |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+
|               2953 | Apartment   | High Rise      |                             2018       | BQ8                                       |
+--------------------+-------------+----------------+----------------------------------+-----+--------------------------------------+

输出应为:

+====================+==+
| totalNumberOfUnits |  |
+====================+==+
|               2368 |  |
+--------------------+--+
|               2066 |  |
+--------------------+--+
|                898 |  |
+--------------------+--+
|               5330 |  |
+--------------------+--+

因此totalNumberOfUnits,2018年第一季度为2368,这是BQ1和BQ2的总和其他人也是如此。没有关于BQ6的数据,所以totalNumberOfUnits将是898,这是BQ5的单位semi-quarter 总数

这可能是微不足道的,但是我不确定该怎么做。在Stack Overflow中找不到相同的用例。谢谢您的帮助!!

我正在使用的MySQL版本是5.7.26

专线小巴

您可以使用字符串函数和聚合:

select 
    left(period, 4) as yyyy, 
    floor((right(rsh.period, 1) + 1) / 2) as q,
    sum(totalNumberOfUnits) as totalNumberOfUnits
from mytable
group by yyyy, q

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章