问题
I have a table in MS Access 2003 that looks like this:
*url id*
example.com red
example.com blue
example.com blue
other.com red
other.com orange
more.com blue
For each URL I want to know how many unique id there are. so in this case the result should be:
*url count of distinct id*
example.com 2 (because red and blue are the only values)
other.com 2
more.com 1
This is very similar to SQL query to count number of different values except the solution in that case does not work because it relies on COUNT DISTINCT, but that is not supported in Access. I have tried to look up alternative ways of doing count distinct in Access but I'm afraid I don't understand the answers.
So I guess this problem can be summarized as "how to simulate count distinct in msaccess".
I would greatly appreciate it if someone can give me a hint.
回答1:
This should work in MS Access 2003 (I just tested it):
SELECT url, count(id) as CountOfId
FROM
(
SELECT distinct id, url
FROM yourtable
) x
GROUP BY url
In this you get the distinct id and url in a subquery and then you count that result.
回答2:
Here is another way of doing it without using the distinct keyword. (Although it looks like later versions of access would support it):
SELECT t.url, Count(*) AS distinct_id_count
FROM
(
SELECT url
FROM *source_table_name_here*
GROUP BY url, id
) AS t
GROUP BY t.url
ORDER BY COUNT(*) DESC, t.url;
来源:https://stackoverflow.com/questions/13851607/query-to-count-number-of-different-values