永发信息网

MySQL:按种类统计应该如何写语句呢?

答案:2  悬赏:70  手机版
解决时间 2021-01-31 15:43
id gender
1 male
2 female
3 male
4 male
5 middle

预期结果是
male female middle
3 1 1

应该如何实现呢?是使用group by吗?
最佳答案
SELECt SUM(male) AS male, SUM(female) AS female, SUM(middle) AS middle
FROM (
SELECt 0 AS name,
SUM(IF(name = 'male', 1, 0)) AS male,
SUM(IF(name = 'female', 1, 0)) AS female,
SUM(IF(name = 'middle', 1, 0)) AS middle
FROM a GROUP BY name
) AS t
GROUP BY t.name
写的有点复杂。
全部回答
mysql有自己的语法的 看看教程吧 1.连接mysql: mysqlbinmysql-h主机地址-u用户名-p用户密码 2.退出mysql:exit 3.修改密码: mysqlbinmysqladmin-uroot-p(oldpassword)passwordnewpassword 4.增加用户: 添加一个用户test1密码为abc;让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入 mysql,然后键入以下命令:grantselect,insert,update,deleteon*.*totest1@"%"identified by"abc"; 增加一个用户test2密码为abc,让其只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地 主机,即mysql数据库所在的那台主机),这样用户即使用知道test2的密码,也无法从internet上直接访问数据库,只能通过mysql主机上的web页 来访问了。grantselect,insert,update,deleteonmydb.*totest2@localhostidentifiedby"abc"; 增加一个可以从任何地方连接服务器的一个完全的超级用户 grantallprivilegeson*.*totest3@"%"identifiedby'password'withgrantoption; 5.删除授权 revokeselect,insert,update,deleteom*.*fromtest2@localhost; -------------------------------------------------------- 6.显示数据库 showdatabases; 7.显示数据库中的表 usedataname; showtables; 8.显示表的结构 describetablesname; 9.建库 createdatabase库名; 10.建表 usedataname; createtableteacher//建立表teacher ( idint(3)auto_incrementnotnullprimarykey, namechar(10)notnull, addressvarchar(50)default'深圳', yeardate );//建表结束 //以下为插入字段 insertintoteachervalues('','glchengang','深圳一中','1976-10-10'); insertintoteachervalues('','jack','深圳一中','1975-12-23'); 注:在建表中 (1)将id设为长度为3的数字字段:int(3),并让它每个记录自动加一:auto_increment, 并不能为空:notnull,而且让它成为主字段primarykey (2)将name设为长度为10的字符字段 (3)将address设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别 呢,只有等以后的文章再说了。 (4)将year设为日期字段。 如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令 原样写入一个文本文件中假设为school.sql,然后复制到c:下,并在dos状态进入目录 mysqlin,然后键入以下命令: mysql-uroot-p密码<c:school.sql 如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你 只要将//的注释去掉即可使用)。 11.删除库和删除表 dropdataname; droptablename; 12.将表中的记录清空 deletefromtablename; 13.显示表中的记录 select*fromtablename; 14.表重命名 altertablet1renamet2 --------------------------------------------------------- 15.备份数据库 mysqlbinmysqldump-h(ip)-uroot-p(password)databasename>database.sql 16.恢复数据库 mysqlbinmysql-h(ip)-uroot-p(password)databasename<database.sql 17.复制数据库 mysqldump--all-databases>all-databases.sal 18.备份表 mysqlbinmysqldump-h(ip)-uroot-p(password)databasenametablename>tablename.sql 19.恢复表(操作前先把原来的表删除) mysqlbinmysql-h(ip)-uroot-p(password)databasenametablename<tablename.sql ---------------------------------------------------------- 20.为了改变列a,从integer改为tinyintnotnull(名字一样), 并且改变列b,从char(10)改为char(20),同时重命名它,从b改为c: altertablet2modifyatinyintnotnull,changebcchar(20); 增加一个新timestamp列,名为d: altertablet2adddtimestamp; 在列d上增加一个索引,并且使列a为主键: altertablet2addindex(d),addprimarykey(a); 删除列c: altertablet2dropcolumnc; 增加一个新的auto_increment整数列,命名为c: altertablet2addcintunsignednotnullauto_increment,addindex(c); 注意,我们索引了c,因为auto_increment柱必须被索引,并且另外我们声明c为notnull, 因为索引了的列不能是null --------------------------------------------------------------- 21.数据的导入导出 a。mysqlimport 语法:mysqlbinmysqlimportdatabasetables.txt(文件名需要与表名相同) 参数:-dor--delete新数据导入数据表中之前删除数据数据表中的所有信息; -for--force不管是否遇到错误,mysqlimport将强制继续插入数据; -ior--ignoremysqlimport跳过或者忽略那些有相同唯一关键字的行,导入文件中的数据将被忽略; -lor-lock-tables数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响; --fields-enclosed-by=char 指定文本文件中数据的记录时以什么括起的,很多情况下数据以双引号括起。默认的情况下数据是没有被字符括起的。 --fields-terminated-by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。您可以用此选项指定数据之间的分隔符。默认的分隔符是跳格符 (tab) --lines-terminated-by=str 此选项指定文本文件中行与行之间数据的分隔字符串或者字符。默认的情况下mysqlimport以newline为行分隔符。您可以选择用一个字 符串来替代一个单个的字符:一个新行或者一个回车。 mysqlimport命令常用的选项还有-v显示版本(version),-p提示输入密码(password)等。 -------------------------------------------------------------- 22.常用插入、修改、删除语句 插入记录:insertintoteachervalues('','glchengang','深圳一中','1976-10-10'); 修改记录:updatemytablesetsingle=′y′wherename=′abccs′; 删除记录:deletefrommytablewherename=′abc′;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
名汇·海逸酒店-咖啡厅地址好找么,我有
如何正确使用电吹风!
在人类思想文化发展进程中,中外思想文化相互
现付要登在银行存款日记账里面 还是要登在现
一千零一夜txt一千零一夜全集txt
云影琼楼酒店咖啡厅地址在哪,我要去那里办事
力山研磨有限公司地址在什么地方,想过去办事
8.4连续减去()个0·2结果是0
喜·coffee地址有知道的么?有点事想过去
数学20-21题.急用
CaffeRolin地址在什么地方,我要处理点事
我家蛇一直翻肚皮,奄奄一息
SomeTimecoffee地址有知道的么?有点事想过去
惠普p15一075笔记本参数
施耐普研磨地址在什么地方,我要处理点事
推荐资讯
呼啸山庄的译本哪个更好些?
女朋友说 我感觉我们根本不合适,性格爱好都
天天锻炼身体好不好?
右图中,虚线箭头表示水平运动物体的原始运动
衢州兴旺宾馆怎么去啊,我要去那办事
中国邮政储蓄银行(海兴县支行)地址在哪,我要
农村信用合作社(兔街信用社)地址在什么地方,
韩国的¥1000等于人民币多少元
根号的乘除运算1)√6×√15
东良谷村地址在哪,我要去那里办事
动态评分对店铺影响究竟有多大
东北人参什么牌子好?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?