总结记录

时间:2013-03-03 05:06:43

标签: mysql sql

我有一个记录表,如

╔═════╦══════╦══════════╦══════════╗
║ PID ║ NAME ║  DATE1   ║  DATE2   ║
╠═════╬══════╬══════════╬══════════╣
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 323 ║ mike ║ 20110401 ║ 19900101 ║
║ 323 ║ mike ║ 20110401 ║ 19900101 ║
╚═════╩══════╩══════════╩══════════╝
{p> query1 count上的pid

query2如果所有四个字段都相同,则记录将被视为一条记录,否则单个记录和记录将计入pid订单。

以上结果是:

╔═════╦══════════════╦═════════════╗
║ PID ║ TOTALRECORDS ║ TOTALUNIQUE ║
╠═════╬══════════════╬═════════════╣
║ 123 ║            3 ║           1 ║
║ 323 ║            2 ║           1 ║
╚═════╩══════════════╩═════════════╝

我做了select pid,count(pid),(select count(pid) group by pid,name,date1,date2) from <table> group by pid;

但是我收到了错误......请更正我的代码。

1 个答案:

答案 0 :(得分:1)

SELECT  pid,
        COUNT(*) totalRecords,
        COUNT(DISTINCT name, date1, date2) totalUnique
FROM    TableName
GROUP   BY pid

结果

╔═════╦══════════════╦═════════════╗
║ PID ║ TOTALRECORDS ║ TOTALUNIQUE ║
╠═════╬══════════════╬═════════════╣
║ 123 ║            3 ║           1 ║
║ 323 ║            2 ║           1 ║
╚═════╩══════════════╩═════════════╝