账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Mysql 如何将查询结果分组并行展示?
    48
    0
    假设表结构是namestart_datenumceshi2021-11-221sss2021-11-212ceshi2021-01-203根据name分组和start_date分组上半年下半年,并且一个name一行展示上半年和下半年的统计num和,如何实现以下查询结果呢?namestart_dateshang_sumxia_sumceshi上半年31sss下半年02我尝试用如下sql实现,但是还是达不到预期SELECT `name`, start_date, IF(MONTH(start_date) >= 7,'下半年','上半年') as cycle, IF(IF(MONTH(start_date) >= 7,'下半年','上半年') = '上半年',SUM(num),0) as shang_sum, IF(IF(MONTH(start_date) >= 7,'下半年','上半年') = '下半年',SUM(num),0) as xia_sumFROM `task` GROUP BY `name`,cycle表结构sql如下:SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for task-- ----------------------------DROP TABLE IF EXISTS `task`;CREATE TABLE `task` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `project_id` int(11) NULL DEFAULT NULL, `name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL, `start_date` date NULL DEFAULT NULL, `end_date` date NULL DEFAULT NULL, `num` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of task-- ----------------------------INSERT INTO `task` VALUES (1, 111, 'ceshi', '2021-11-22', NULL, 1);INSERT INTO `task` VALUES (2, 111, 'sss', '2021-11-21', NULL, 2);INSERT INTO `task` VALUES (3, 222, 'ceshi', '2021-01-20', NULL, 3);SET FOREIGN_KEY_CHECKS = 1;求大佬给点儿思路
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 焉梦终成 普通会员 1楼

      在MySQL中,可以使用GROUP BY语句将查询结果分组并行展示。GROUP BY语句允许您将数据分组,然后对每个分组执行聚合函数,如SUM、AVG、COUNT等。

      以下是一个基本的例子:

      sql SELECT column1, column2, COUNT(*) FROM table_name GROUP BY column1, column2;

      在这个例子中,我们假设有一个名为"table_name"的表,其中包含"column1"和"column2"两列。我们想要计算每个分组(即"column1"和"column2"的值相同的所有行)的数量。

      要将查询结果分组并行展示,可以使用以下的MySQL 8.0版本中的"GROUP BY"子句:

      sql SELECT column1, column2, COUNT(*) FROM table_name GROUP BY column1, column2 ORDER BY column1, column2;

      在这个例子中,我们使用了"ORDER BY column1, column2"子句来对结果进行排序,以便每个分组的结果在同一行上并行显示。我们使用了"GROUP BY column1, column2"子句来指定要分组的列,以及"COUNT(*)"子句来计算每个分组的数量。

      注意:在MySQL 8.0版本中,"GROUP BY"子句的参数现在是可选的。如果省略了参数,MySQL 8.0默认将结果按照列的值进行分组。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部